void test1()
printf("/n");
}void test2()
strcpy(string, str1);
/*strcpy(desc,src)
會把src 視為string型別,拷貝時查詢'/0'結束符,作為scr的結束,來付給desc;
所以,本程式雖然能夠執行,但潛在的問題:
str1的所有10個元素被初始化為'a',但後續的字元是不可預料的,
直到」偶然「碰到了'/0',才停止識別str1;
如果string是個100個元素的大陣列,則會發現str1後面的"隨機元素"也被複製給了string
直到碰到'/0'
說"偶然",加引號,其實'/0'在未知記憶體中還是挺多的。呵呵
當然,如果desc是string[10]的話,也就會掐掉str1後面的東東,這就是表面上的執行正確;
*/printf("%s/n",string);
for(i=0;i<100;i++)
printf("/n");
}
strcpy函式引起的思考
不呼叫庫函式,實現strcpy函式。解釋為什麼要返回char 解說 strcpy的實現 char strcpy char strdest,const char strsrc if null strdest null strsrc 1 throw invalid argument s 2 char s...
strcpy函式的實現
感謝分享!cpp view plain copy char my strcpy char dst,const char src 如果注意到 1,檢查指標有效性 2,返回目的指標des 3,源字串的末尾 0 需要拷貝。寫出上面實現函式就不在話下。然而這樣的實現沒有考慮拷貝時記憶體重疊的情況,下面的測試...
strcpy函式的實現
大家一般認為名不見經傳strcpy函式實現不是很難,流行的strcpy函式寫法是 cpp view plain copy char my strcpy char dst,const char src 如果注意到 1,檢查指標有效性 2,返回目的指標des 3,源字串的末尾 0 需要拷貝。寫出上面實現...