一道字串複製的面試題目

2021-06-19 08:20:03 字數 921 閱讀 3899

很多技術筆試都考字串複製函式的編寫(不能用那個庫函式),  

有人說說這個函式的考點在**和編寫的時候要注意的問題嗎?  

最好能有編寫嚴謹的例程。  

函式宣告:  

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...