strcpy函式的思考

2021-04-20 09:18:18 字數 537 閱讀 3817

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 需要拷貝。寫出上面實現...