«если» функция чтения проблемы с сохраненными данными.C программирование - PullRequest
0 голосов
/ 17 декабря 2018

Используется файл

ПЕРВЫЙ ФАЙЛ:

Hill Man
LC12CS6789
B
A
D
C
A

ВТОРОЙ ФАЙЛ:

B
C
D
C
A

МОЙ КОД ЭТО:

FILE *student, *ans;
student = fopen("StudentAnswer.txt", "r");
ans = fopen("CorrectAnswer.txt", "r");

fscanf(student, "%[^\n]", name);   //have to printf name at the end
fscanf(student, "%s", id);    //also have to printf student id

for(int i=0; i<=10; i++)
{
    fscanf(student, "%c", &array1[i]);
    fscanf(ans, "%c", &array2[i]);
    printf("%c  %c\n", array1[i], array2[i]);  //no prob here

    if(array1[i] != array2[i])  //but my "if" cannot properly read my stored data
    {
        printf("NOT SAME"); 
    }

}

Я должен сравнить «ответ студентов» с «правильным ответом».Затем отобразите вопрос, который студент ошибся, в том числе его имя и идентификатор в верхней части экрана.У меня нет проблем, когда я печатаю только данные массивов, поскольку они располагаются правильно, но тогда «если» не может правильно оценить сохраненные данные, поэтому я не могу сравнить оба массива.Как будто у меня есть дополнительные сохраненные данные, кроме printf, отображаемого

Примечания: я должен прочитать 2 файла, а затем отобразить результат на экране, поэтому нет выходных файлов

Моя мысль: похожеимя и идентификатор «ученика» запутывают ответ ученика.

ОБНОВЛЕНИЕ: Мой код работает, так же, как и Осирис .

НОВЫЙ ПРОБ: у меня есть дополнительная строка, с которой я действительно не имею представления в конце дисплея, то есть

NOT SAME

p / s:символ действительно такой

1 Ответ

0 голосов
/ 17 декабря 2018

Может, потому что fscanf оставляет новую строку в буфере?Попробуйте "% c" вместо "% c" для fscanf.- Осирис

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...