0

我正在为我们的项目使用 c 编程制作一个简单的游戏。球员信息(球员号码,如 1 2 或 3、球员姓名和得分)通过结构存储在文本文件中。我想在游戏开始之前“加载”之前玩家的信息,以便当前玩家通过从文件中获取玩家编号并立即打印出来来知道他/她的玩家编号是什么。我正在使用,while(!feof(fp))但我遇到了麻烦,因为它只打印第一个玩家号码。请帮我。

while(!feof(fp)) {
fp = fopen("scores.txt","a+");
fscanf(fp, "%i \n", &p[load].nth);
printf ("Loading player no. %i...\n", p[load].nth);
fscanf(fp, "%s \n", p[load].name);
fscanf(fp, "%i \n", &p[load].score);
load++;
}

count=load;
p[count].nth=count;
printf("You are player no. %i", p[count].nth);
4

1 回答 1

4

您的代码有一些错误。

  1. 在打开文件并将值分配feof(fp) fp. 那是未定义的行为。
  2. 打开阅读时您不应该使用"a+"模式,这意味着“带附加阅读”这不是您所追求的。
  3. 无论如何你都不应该这样使用feof():它的目的不是找出何时停止阅读,而是在事后找出阅读失败的原因。
  4. &当参数是字符串时,您不需要。

您处理count.

于 2014-03-24T08:06:19.227 回答