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

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

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

Здравтсвуйте помогите разобраться. написал игру где можно сохранить результат имя и акаунт. При выводе данных выводиться лишь имя и акаунт а вместо очков лишь набор разных цифр. Ниже приведён код.
Листинг программы
  1. #include <stdio.h>
  2. #include <time.h>
  3. struct gamer {
  4. int number;
  5. char name[50];
  6. int score;
  7. };
  8. int main() {
  9. FILE *fptr;
  10. struct gamer player;
  11. srand(time(0));
  12. int pick, win_number, account;
  13. char ch;
  14. win_number=(rand()%10)+1;
  15. printf("Wellcome to pick a number game!!\n");
  16. printf("Enter your account: ");
  17. scanf("%d", &player.number);
  18. printf("Enter your name: ");
  19. scanf("%s", &player.name);
  20. printf("Pick a number between(1-10): ");
  21. scanf("%d", &pick);
  22. if(pick == win_number) {
  23. printf("You win 10 scores!!\n");
  24. player.score +=10;
  25. }
  26. else {
  27. printf("You lose.\n");
  28. player.number=0;
  29. }
  30. printf("Would you like to store your data: ");
  31. scanf("%s", &ch);
  32. if(ch == 'y') {
  33. if((fptr=fopen("game.dat", "w"))==NULL)
  34. printf("File could not be opened");
  35. else {
  36. fseek(fptr, (player.number-1)*sizeof(struct gamer), SEEK_SET);
  37. fwrite(&player, sizeof(struct gamer), 1, fptr);
  38. }
  39. fclose(fptr);
  40. }
  41. printf("Would you like to see your data: ");
  42. scanf("%s", &ch);
  43. if(ch == 'y') {
  44. if((fptr=fopen("game.dat", "r"))==NULL)
  45. printf("File could not be opened");
  46. else {
  47. printf("Enter you account: ");
  48. scanf("%d", &account);
  49. fseek(fptr, (account-1) * sizeof(struct gamer), SEEK_SET);
  50. fread(&player, sizeof(struct gamer), 1, fptr);
  51. if(player.number == 0)
  52. printf("Account is not found.\n");
  53. else {
  54. printf("Account: %d\n", player.number);
  55. printf("Name: %s\n", player.name);
  56. printf("Score: %d", player.score);
  57. }
  58. }
  59. fclose(fptr);
  60. }
  61. return 0;
  62. }

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

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

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

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

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


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

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

9   голосов , оценка 3.556 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы