В то время как это не работает, когда я пытаюсь сравнить значение 2 int (1 форма ввода пользователем, 1 из файла data .txt) (проект записи учащихся)

#c

Вопрос:

Я пытался решить эту проблему на вечер и до поздней ночи, но до сих пор не понимаю, в чем я ошибаюсь. Проблема заключается в функциях поиска студентов. Даже пользователь вводит правильный идентификатор учащегося, но он всегда отправляет ответ «Без записи» (иначе). Я так новичок в программе С, и завтра я должен представить этот проект. Я буду очень признателен, если кто-нибудь сможет мне помочь. Большое спасибо. вот полный код. https://gist.github.com/KilveKlein/92cf95799ba99f86feccfa81b5bc9ed1

 void search_student() {
     int find_student_id;
     printf("3. search student: nnn");
     int student_ID = 0;
     int isFound = 0;
     printf("Type ID student: "); fflush(stdin);
     scanf("%u", amp;find_student_id);
     FILE *file;
     file = fopen("DataStudentRecord.txt", "rb");
     while (fread(amp;stu, sizeof(stu), 1, file)) {
         if (stu.ID == find_student_id) {
             isFound = 1;
             break;
         }
    }
    if (isFound) {
         printf("nnttttInfo student");
         printf("Name: %s", stu.fullName);
         printf("ID: %s", stu.ID);
         printf("class: %d", stu.classRoom);
         printf("Date of birth: %s", stu.dateOfBirth);
         printf("Gender: %s", stu.gender);
         printf("section: %s", stu.section);
         printf("address: %s", stu.address);
         printf("phone number: %ld", stu.phoneNumber);
    } else {
        printf("nnnttttttNo record.n");
        printf("nttttEnter to continue...");
        getch();
        system("cls");
   }
   fclose(file);
   return;
}
 

Комментарии:

1. не могли бы вы включить свою stu структуру?

2. scanf("%u", amp;find_student_id); < Кстати: Почему бы вам просто не распечатать все записи, включая результаты сравнения?

3. вы уверены fread() , что правильно считываете данные в свою структуру?

4. Ваше .txt расширение подразумевает, что данные являются текстом ascii (например, вы читаете строку fgets и анализируете ее, заполняя struct поля). Но вы используете fread для чтения двоичных данных в struct . Итак, что же это такое? Обратите внимание, что fflush(stdin) это UB (неопределенное поведение). Я бы переработал код, чтобы не использовать его.

5. Вы, по-видимому, намеревались избавиться от ЗППП?