其实“烫烫烫”是数组中未初始化时的值,不表示越界。你这样改
fp=fopen("d:\\test.ini", "r");
i=fread(p, 1, 99 , fp); //最多读99个字符,fread返回的是实际读到的字符数
buf[i]='\0';
这样就一定不会出“烫烫烫”了。
如果上面的fread返回的值为99,则表明文件还没读完,要继续读,且你要考虑读到的各段的拼接问题。简单办法就是扩大buf的大小,估计一般的ini文件都不会大于2048字节的。
另外size_t fread( void *buffer, size_t size, size_t count, FILE *stream );
fread()的第二个参数表示读的每一个元素的长度,第三个表示希望读多少个这样的元素,所以你这里最好用
i=fread(p, sizeof(char), sizeof(buf)-1, fp);
fread第三个参数含义是读取字符个数,你的buf只有1个字符而且没有'\0'结束符,所以你的输出buf知道碰到buf所指向的地址后面存储的第一个'\0'才会停止,
%s改成%c吧