При загрузке данных из файла выводится мусор - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Здравтсвуйте помогите разобраться. написал игру где можно сохранить результат имя и акаунт. При выводе данных выводиться лишь имя и акаунт а вместо очков лишь набор разных цифр. Ниже приведён код.
#include <stdio.h>
#include <time.h>
 
struct gamer {
   int number;
  char name[50];
   int score;
};
 
int main() {
 
    FILE *fptr;
 
 struct gamer player;
 srand(time(0));
 
 int pick, win_number, account;
 char ch;
 win_number=(rand()%10)+1;
 
     printf("Wellcome to pick a number game!!\n");
 
     printf("Enter your account: ");
     scanf("%d", &player.number);
     printf("Enter your name: ");
     scanf("%s", &player.name);
 
     printf("Pick a number between(1-10): ");
     scanf("%d", &pick);
 
     if(pick == win_number) {
 
            printf("You win 10 scores!!\n");
            player.score +=10;
        }
 
    else {
            printf("You lose.\n");
            player.number=0;
         }  
    printf("Would you like to store your data: ");
    scanf("%s", &ch);
 
    if(ch == 'y') {
 
         if((fptr=fopen("game.dat", "w"))==NULL)
         printf("File could not be opened");
 
      else {
           fseek(fptr, (player.number-1)*sizeof(struct gamer), SEEK_SET);
           fwrite(&player, sizeof(struct gamer), 1, fptr);
          }
      fclose(fptr);
    }
 
    printf("Would you like to see your data: ");
    scanf("%s", &ch);
 
    if(ch == 'y') {
 
        if((fptr=fopen("game.dat", "r"))==NULL)
         printf("File could not be opened");
 
      else {
           printf("Enter you account: ");
           scanf("%d", &account);
          fseek(fptr, (account-1) * sizeof(struct gamer), SEEK_SET);
          fread(&player, sizeof(struct gamer), 1, fptr);
          if(player.number == 0)
           printf("Account is not found.\n");
          else {
           printf("Account: %d\n", player.number);
           printf("Name: %s\n", player.name);
           printf("Score: %d", player.score);
            }
          }
 
      fclose(fptr);
        }
      return 0;
  }

Решение задачи: «При загрузке данных из файла выводится мусор»

textual
Листинг программы
if(player.number == 0)
  printf("Account is not found.\n");

Объяснение кода листинга программы

  1. Предполагается, что игрок (игроки) с номером 0 не существует (не существуют).
  2. Если номер игрока равен 0, то выводится сообщение Account is not found..
  3. Вероятно, это сообщение об ошибке, которое говорит о том, что счет игрока не найден в файле данных.
  4. Файл данных, вероятно, содержит информацию о нескольких игроках, и их номера и другие данные записаны в нем.
  5. Когда программа пытается загрузить данные для игрока с номером 0, она не может найти соответствующую информацию в файле.
  6. В результате выводится сообщение об ошибке, чтобы указать, что счет игрока не найден.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 3.556 из 5
Похожие ответы