場景:當我們使用字元串的時,稍不注意就會使用錯誤,導緻字元串越界,也就是字元後面有一些莫名其妙的字元。
1 先看下面代碼
const char* str1 = "tests";
char str2[5] = {'t','e','s','t','s'};
std::cout<< "str1: " << str1<<endl;
std::cout<< "str2: " << str2<<endl;
輸出結果為:
str1: tests
str2: tests燙燙燙燙燙台x
請按任意鍵繼續. . .
分析原因:預設情況下 “tests” 這樣寫,s後面自動加了 '\0' ,但是如果你是數組,就沒有加了。
解決方法:在把數組大小加 1 在後面添加 '\0'
提示:這樣的問題在對檔案讀寫的時候也會出現,比如你在Linux下用C語言寫個指令行的FTP的上傳或下載下傳功能時,你是每一次讀寫 1KB
但是,寫到最後的時候,可能沒有 1 KB,這時你發送 1KB的時候,發送字元串已經越界了,就會導緻檔案空洞,是以發送字元串的
個數為fread的傳回值,即讀取的字元個數,這樣就不會多發的現象。