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

📅  最后修改于: 2021-05-25 22:59:12             🧑  作者: Mango

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

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

#include 
#include 
  
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 
#include 
  
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;
}

参考:
不要对fopen()和文件创建做任何假设
http://en.wikipedia.org/wiki/C11_(C_standard_revision)
http://www.cplusplus.com/reference/cstdio/freopen/

想要从精选的最佳视频中学习和练习问题,请查看《基础知识到高级C的C基础课程》。