2015-05-04 2 views
-4

код вниз, чтобы скопировать текстовый файл в другой. его сбоя. ошибка утверждения (поток! = NULL)сбой программы во время чтения из файла. C

fp = fopen("quiz.txt", "w"); 
fp2 = fopen("output.txt", "r"); 

number_of_conversions = fscanf(fp2, "%c", &c); 

while (number_of_conversions != 0 && number_of_conversions != EOF){ 
    fputc(c,fp); 
    number_of_conversions = fscanf(fp2, "%c", &c); 
} 
fclose(fp2); 
fclose(fp); 
+0

код часть винт выше. '\t fp = fopen (" quiz.txt "," w "); \t fp2 = fopen ("output.txt", "r"); \t number_of_conversions = fscanf (FP2, "% С", &c); \t в то время как (number_of_conversions = 0 && number_of_conversions = EOF) { \t \t fputc (с, FP);! \t \t \t number_of_conversions = fscanf (FP2, "% С", &c); \t} \t fclose (FP2); \t fclose (FP); ' –

+0

я не вижу' assert' в том, что код. И кажется странным, что вы читаете из файла с именем 'output.txt'. – user3386109

+0

Я уже писал данные, теперь я записываю эти данные обратно в файл ввода. –

ответ

0

Всегда проверяйте на Sucess из fopen() перед использованием возвращаемого указателя файла.

Если fopen() не работает, он возвращает NULL, и использование этого приведет к undefined behaviour. Итак, поместите NULL-чек сразу после вызова (-ов) fopen(). Кроме того, FWIW, если fopen() не работает, нет открытого FILE *, и вам не нужно звонить fclose().

Смежные вопросы