场景:当我们使用字符串的时,稍不注意就会使用错误,导致字符串越界,也就是字符后面有一些莫名其妙的字符。

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的返回值,即读取的字符个数,这样就不会多发的现象。