我正在为我们的项目制作一个简单的游戏。玩家的信息(玩家编号,如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);
你的代码有几个错误。
- 在打开文件并赋值给
fp
之前,不能使用feof(fp)
。这是未定义的行为。 - 你不应该在打开读取时使用
"a+"
模式,这意味着"带追加读取",这不是你想要的。 - 你不应该像那样使用
feof()
:它的目的不是弄清楚什么时候停止阅读,而是弄清楚为什么阅读失败。 - 当参数是字符串时不需要
&
。
您处理count
的方式似乎也可能存在一些偏离一的索引问题。