c-函数fread未通过0终止字符串



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。

我已经链接了freadbzero的两个手册页,希望这能帮助你。

最新更新