C在打开文件时编程fopen()

时间:2010-12-03 02:01:01

标签: c fopen

我一直在想这个。我读过的大多数书都表明,当你打开一个文件而你发现文件不存在时,你应该输入一个没有这样文件的错误然后退出系统......

FILE *stream = NULL; 
stream = fopen("student.txt", "rt");
if (stream==NULL) {
    printf(“Cannot open input file\n”);
    exit(1);
else {printf("\nReading the student list directory. Wait a moment please...");

但是我认为这不是那样做的。当你发现你正在打开的文件不存在时,为什么不自动创建一个新的呢?即使您在使用该程序时不会在文件上写入(但下次将使用它)。我不确定这是否有效。我刚刚来到这里并且没有任何编程经验,所以我问你的意见在尝试打开文件时创建文件的优点和缺点是什么,而不是像通常在书上一样退出系统。

FILE *stream = NULL; 
stream = fopen("student.txt", "rt");
     if (stream == NULL) stream = fopen("student.txt", "wt");
     else {
          printf("\nReading the student list directory. Wait a moment please...");

您的意见将受到高度赞赏。谢谢。

4 个答案:

答案 0 :(得分:8)

因为来自您的示例,它似乎是一个输入文件,如果它不存在,则无法创建它。

例如,如果程序应该打开一个文件,然后计算其中有多少个元音,那么如果文件不存在,我就没有太多意义来创建它。

我的价值0.02美元。

答案 1 :(得分:5)

参数模式:

 ``r''   Open text file for reading. 
 ``r+''  Open for reading and writing. 
 ``w''   Truncate file to zero length or create text file for writing.
 ``w+''  Open for reading and writing.  The file is created if it does not
         exist, otherwise it is truncated.  
 ``a''   Open for writing.  The file is created if it does not exist.
 ``a+''  Open for reading and writing.  The file is created if it does not
         exist.  

您的问题很简单。阅读上面的描述,当你调用fopen()时,你应该决定使用哪种模式。请考虑为什么不为“r”和“r +”创建文件,以及为什么文件被截断为“w”和“w +”等等。所有这些都是合理的设计。

答案 2 :(得分:2)

如果你的程序希望文件存在而它不存在,那么自己创建一个文件没有多大意义,因为它将是空的。

如果OTOH,你的程序没有存在的文件就可以了,并且知道如何从头开始填充,那么这样做是完全可以的。

只要对你的程序有意义,它们都可以。这里不要担心效率 - 它可以忽略不计。先担心正确性。

答案 3 :(得分:1)

您可能没有权限创建/写入用户选择的目录中的文件。您将不得不处理该错误情况。