1. 主页
  2. 文档
  3. C语言教程
  4. C语言文件处理
  5. C 中的fopen() 用于写入模式下的现有文件

C 中的fopen() 用于写入模式下的现有文件

在 C 中,fopen()用于以不同的模式打开文件。要以写入模式打开文件,指定“w”。当指定模式“w”时,它会为输出操作创建一个空文件。

如果文件已经存在怎么办?
如果已存在同名文件,则丢弃其内容并将该文件视为新的空文件。例如,在下面的程序中,如果“test.txt”已经存在,则删除其内容并写入“GeeksforGeeks”。

#include <stdio.h>
#include <stdlib.h>

int main()
{
FILE *fp = fopen("test.txt", "w");
if (fp == NULL)
{
puts("Couldn't open file");
exit(0);
}
else
{
fputs("GeeksforGeeks", fp);
puts("Done");
fclose(fp);
}
return 0;
}

上述行为可能会导致意想不到的结果。如果程序员的意图是创建一个新文件并且已经存在同名文件,则现有文件的内容将被覆盖。

最新的 C 标准C11提供了一个新的模式“x”,它是独占创建和打开模式。模式“x”可以与任何“w”说明符一起使用,例如“wx”、“wbx”。当 x 与 w 一起使用时,如果文件已存在或无法打开,则 fopen() 返回 NULL。以下是修改后的 C11 程序,它不会覆盖现有文件。

#include <stdio.h>
#include <stdlib.h>

int main()
{
FILE *fp = fopen("test.txt", "wx");
if (fp == NULL)
{
puts("Couldn't open file or file already exists");
exit(0);
}
else
{
fputs("GeeksforGeeks", fp);
puts("Done");
fclose(fp);
}
return 0;
}

 

这篇文章对您有用吗?