Итак, я пытаюсь прочитать ввод из одного файла (ride.in), выполнить с ним расчет и распечатать результат в другом файле (ride.out). Когда я пытаюсь использовать первый файл с помощью fscanf, он работает нормально. Он также работает, когда я печатаю только с помощью printf. Однако он не работает, когда я пытаюсь записать файл с помощью fprintf, в результате чего возникает ошибка сегментации: 11. Как это возможно?Ошибка сегментации только для одного файла?
код, который работает:
#include <stdio.h>
#include <stdlib.h>
int main() {
FILE *fin = fopen ("ride.in", "r");
FILE *fout = fopen ("ride.out", "w");
char UFO[6], group[6];
fscanf(fin, "%s", UFO);
int sumUFO = 0, sumGroup = 0;
for(int i = 0; i < 6; i++){
sumUFO += (int) UFO[i];
}
fscanf(fin, "%s", group);
for(int i = 0; i < 6; i++){
sumGroup += (int) group[i];
}
fclose(fin);
if(sumUFO == sumGroup)
printf("GO");
else
printf("STAY");
exit (0);
}
Однако, когда я изменяю последнее утверждение, если использовать fprintf вместо Printf, я получаю Segmentation Fault: 11. Это последнее, если заявление. Больше ничего не было изменено:
if(sumUFO == sumGroup)
fprintf(fout,"GO");
else
fprintf(fout,"STAY");
Input ride.in в настоящее время выглядит следующим образом:
AAAAAA
AAAAAA
Выход ride.out в настоящее время пустой текстовый файл.
Проверка для возвращаемого значения 'fopen' т.е. если' fout' является не 'NULL'. – nnn
У ваших файлов больше 6 байтов? – thumbmunkeys
Возможно, вы превыше границ НЛО и/или группы и развращаете указатель fout. Как выглядит ваш входной файл? – keithmo