Я пишу программу, которая собирает пользовательский ввод для двух имен файлов и открывает одно из них для чтения и одно для записи.
Мой код:
void
gather_input (char* infileName, char* outfileName, char* mode,
FILE* inputFile, FILE* outputFile)
{ int flag = 0; //error checking flag
do
{ flag = 0;
printf("Enter the name of the source file: ");
scanf("%s", infileName);
if (!(inputFile = open_input_file(infileName))) //will enter if statement only if
{ fprintf(stderr, "Error opening '%s': %s\n", //inputFile == NULL
infileName, strerror(errno)); //some error checking
flag = 1; //true
}
} while (flag);
do
{ flag = 0;
printf ("Enter the name of the destination file: ");
scanf("%s", outfileName);
if (!(outputFile = open_output_file(outfileName)))
{ fprintf (stderr, "Error opening '%s': %s\n",
infileName, strerror(errno));
flag = 1;
}
} while (flag);
отлично работает при проверке ошибок, что входной файл был открыт; однако он не может исправить или обнаружить, что выходной файл был правильно введен или открыт. Это часть более крупной функции, которую я могу публиковать при необходимости (режим char * используется в другом разделе).
Проблема в том, что когда я говорю fopen (outfileName, "w"), что и происходит в open_output_file (), программа будет пытаться создать файл, если он не существует (то есть когда пользователь выдает мусор вход). Я хочу избежать этого. Есть идеи?