我一直在想这个。我读过的大多数书都表明,当你打开一个文件而你发现文件不存在时,你应该输入一个没有这样文件的错误然后退出系统......
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...");
您的意见将受到高度赞赏。谢谢。
答案 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)
您可能没有权限创建/写入用户选择的目录中的文件。您将不得不处理该错误情况。