很多技術筆試都考字串複製函式的編寫(不能用那個庫函式),
有人說說這個函式的考點在**和編寫的時候要注意的問題嗎?
最好能有編寫嚴謹的例程。
函式宣告:
char * strcpy(char * strdest, const char * strsrc)
目前為止,我總結出:
1,考察strdest和strsrc非空
2,考察strdest和strsrc是否重疊
3,注意書寫結構
4,函式健壯性
另外,我覺得如果strsrc緩衝區的資料長度如果超過了strdest緩衝區
的長度,就會產生溢位,但怎麼檢查strdest緩衝區的長度?
有誰還有補充?
strncpy()函式: 這個程式是真正的牛人linus torvalds寫的
char * strncpy(char * dest,const char *src,size_t count)
肯定會有人說:「不對呀,為什麼不為目標字串加上結束標誌,變成這樣:
while (count-- && (*dest++ = *src++) != '\0')
/* nothing */;
*dest = '\0'; 」
我說,作為strncpy函式,它只要把指定長度的字元copy給目標串就行了,而不需要自作多情,加上什麼字串結束標誌,也許函式呼叫者根本就不想要這個結束標誌,如果需要,他自己會加上的。
所以說,乙個函式,只作自己該作的事,這就是簡單性;而其他函式應該明白被呼叫函式可以作什麼事,這就是一致性;unix/linux本身就是簡單一致性原則的絕妙產品。
一道字串複製的面試題目
很多技術筆試都考字串複製函式的編寫 不能用那個庫函式 有人說說這個函式的考點在 和編寫的時候要注意的問題嗎?最好能有編寫嚴謹的例程。函式宣告 char strcpy char strdest,const char strsrc 目前為止,我總結出 1,考察strdest和strsrc非空 2,考察s...
Java中字串比較的一道面試題
題目 public class test 輸出結果 true false false false 解析 直接把上面 進行反編譯一下就知道其中的原理了。上面可以進行如下理解 string a hello string b hello string tmp string.valueof a string...
一道面試題
一道面試題 射擊運動員10發打中90環有多少種可能,請編寫程式計算出來,並列印出結果,0環和10環均有效。打中90環就是沒打中10環,所以打中90環跟打中10環的可能性是一樣的。然後開始遞迴狂打槍,一到10就記錄 if params i 10 在迴圈的控制中已經排除了大於10的可能性 i 10 pa...