C Программирование fopen () при открытии файла - PullRequest
1 голос
/ 03 декабря 2010

Мне было интересно об этом.Большинство книг, которые я прочитал, показывают, что когда вы открываете файл и обнаруживаете, что файл не существует, вы должны сообщить об ошибке, что такого файла нет, и выйти из системы ...

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 ]

8 голосов
/ 03 декабря 2010

Поскольку из вашего примера , похоже, что это входной файл, если он не существует, нет смысла его создавать.

Например, если программа должна открыть файл, затем посчитать, сколько в нем гласных, тогда я не вижу большого смысла создавать файл, если он не существует.

мои $ 0,02.

5 голосов
/ 03 декабря 2010

Режим аргумента:

 ``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 голосов
/ 03 декабря 2010

Если ваша программа ожидает, что файл существует, а его нет, то создание его самостоятельно не имеет большого смысла, так как он будет пустым.

Если OTOH, ваша программа в порядке с файлом, которого не существует, и знает, как его заполнить с нуля, тогда это вполне нормально.

Либо хорошо, если это имеет смысл для вашей программы. Не беспокойтесь об эффективности здесь - это незначительно. Вначале беспокоиться о правильности.

1 голос
/ 03 декабря 2010

У вас может не быть разрешения на создание / запись в файл в каталоге, выбранном пользователем. Вам придется обработать это условие ошибки.

...