При загрузке данных из файла выводится мусор - 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");
Объяснение кода листинга программы
- Предполагается, что игрок (игроки) с номером 0 не существует (не существуют).
- Если номер игрока равен 0, то выводится сообщение
Account is not found.. - Вероятно, это сообщение об ошибке, которое говорит о том, что счет игрока не найден в файле данных.
- Файл данных, вероятно, содержит информацию о нескольких игроках, и их номера и другие данные записаны в нем.
- Когда программа пытается загрузить данные для игрока с номером 0, она не может найти соответствующую информацию в файле.
- В результате выводится сообщение об ошибке, чтобы указать, что счет игрока не найден.