潦倒不堪的意思:c++高手帮忙看看,为什么输出数组总是有“烫烫烫”。。。。

来源:百度文库 编辑:神马品牌网 时间:2024/05/03 19:52:55
程序主要部分是这样的
char xin1[10];
file31.seekg(m);
while(!file31.eof()&&o<sizeof xin1)
file31.get(xin1[o++]);
ofstream ofile("d:\\b.txt",std::ios::app);
ofile<<xin1;

sizeof xin1是10,如果源文件长度不少于10个字符,那么第10个字符就会将xin1[9]覆盖,则xin1本身10个字符没有包含结束符'\0',再向目前文件写入时,程序在将xin1的10个字符写入后会一直继续写入内存中放在xin1[10]之后的数据直到碰到0为止,而这中间的内存数据是不可知的,一般在VC里会是205,而两个字节的205连在一起,正好是汉字“烫”的代码。

其实你已经知道数组大小为10,那么你就要确保xin1[9]不要保存文件数据,在循环条件里用o<sizeof(xin1) - 1,或者干脆用o<9。循环结束后,加一句xin[9]='\0'。