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