При загрузке данных из файла выводится мусор - 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, она не может найти соответствующую информацию в файле.
- В результате выводится сообщение об ошибке, чтобы указать, что счет игрока не найден.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д