C中的文件新手,尝试通过fread 读取文件
以下是文件的内容:
line1 how
使用的代码:
char c[6];
fread(c,1,5,f1)
输出var'c'时,内容在末尾显示一个随机字符(例如:line1*)
fread没有终止字符串还是我遗漏了什么?
否。fread
函数只是读取一些元素,它没有"字符串"的概念。
- 您可以自己添加NUL终止符
- 您可以使用
fgets
/fscanf
就我个人而言,我会选择fgets
。
对不起,我参加聚会有点晚了。
不,弗雷德不会帮你处理的。必须手动完成。幸运的是,这并不难。我喜欢使用fread()的返回来设置NUL,如下所示:
char buffer[16+1]; /*leaving room for ' ' */
x = fread(buffer, sizeof(char), 16, stream);
buffer[x]=' ';
现在,您有了一个\0终止的字符串,作为奖励,我们有了个漂亮的变量x,如果以后需要的话,它实际上省去了运行strlen()的麻烦。整洁的
fread的手册页没有说明在文件末尾添加终止零。
如果你想安全,可以将c数组中的所有字节初始化为零(通过bzero或类似的方法),当你读入时,你会得到一个终止的null。
我已经链接了fread
和bzero
的两个手册页,希望这能帮助你。