gpt4 book ai didi

c - printf 打印到 c 中的二进制文件

转载 作者:太空宇宙 更新时间:2023-11-04 07:32:08 25 4
gpt4 key购买 nike

我有一个二进制文件,我可以打开、修改和关闭它。然后我 printf 到控制台。

一切正常,但我现在才意识到它会将我正在打印到控制台的任何内容附加到二进制文件的末尾,无论文件是打开还是关闭都没有区别。

fprintf 也会发生同样的事情。

这是怎么回事?关于文件 I/O,有什么我不明白的地方吗?

更新:这是代码:

FILE *out = fopen("test","wb+");
fseek(out,0,SEEK_END);
fwrite("test",1,10,out);
fwrite("test",1,10,out);
fwrite("test",1,10,out);
int pos = ftell(out);
fwrite(&pos,sizeof(int),1,out);
fclose(out);
fprintf(stdout,"%s","hello");

最佳答案

fwrite() 的调用是不正确的,因为它们指示 fwrite() 从 5 个字符的数组(字符串文字附加了一个隐式空字符)。这将超出数组的末尾进行访问,从而导致未定义的行为,并且可能是导致奇怪行为的原因。

更正 fwrite() 调用:

fwrite("test", 1, 4, out);

根据评论,如果必须有 10 个字符,则声明一个数组:

char msg[10] = "test"; /* Unspecified elements will be null. */

fwrite(msg, 1, sizeof(msg), out);

关于c - printf 打印到 c 中的二进制文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12796490/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com