gpt4 book ai didi

c - 在 C 中使用具有相同标志的 fopen 打开文件

转载 作者:太空狗 更新时间:2023-10-29 15:49:08 24 4
gpt4 key购买 nike

我无法理解这段代码的输出?

int main()
{
FILE* f, *f1;
f = fopen("mytext", "w");
if ((f1 = fopen("mytext", "w")) == 0)
printf("unable\n");
fprintf(f, "hello\n");
fprintf(f1, "hi\n");
return 0;
}

输出是 hello 在我的文本文件中。为什么不写呢? “无法”未打印到 stdout .

最佳答案

您有 2 个 FILE* 打开同一个文件,指向文件的开头,因此其中一个写入会覆盖另一个。

另请注意,FILE* 通常是缓冲的,因此当您 fclose() 或 fflush() FILE* 时,这些小字符串实际上会写入文件。由于您两者都不做,系统会在应用程序退出时执行此操作,因此覆盖哪个写入取决于系统先关闭哪个文件。

如果你以附加模式打开这两个文件,fopen("mytext","a");,你会看到不同的结果,但你需要 fflush() 文件* 当你想确保对另一个文件进行操作时 * 不会导致交错输出。从不同的进程/线程写入同一个文件会更加小心,例如某种形式的文件锁定。

关于c - 在 C 中使用具有相同标志的 fopen 打开文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11723397/

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