gpt4 book ai didi

c - 添加分数的程序不会从 C 的每一行中获取?

转载 作者:行者123 更新时间:2023-11-30 17:35:27 24 4
gpt4 key购买 nike

是的,我创建了一个程序,该程序将从一些不同文件中的一行获取内容并对它们求和,并将总和打印到屏幕上,然后继续获取下一行,如下所示。

#include<stdio.h>
#include<conio.h>
void addscores(void);

FILE *faa;
FILE *fab;
FILE *fac;

int DataCount=0;
int total=0;

struct store3
{
int def3;
}stock3[128];

int main()
{
addscores();
}
void addscores(void)
{
do
{
total=0;
faa=fopen("Test 01 Scores.txt","r");
fscanf(faa,"%d", &stock3[DataCount].def3);
fclose(faa);

total=total+stock3[DataCount].def3;

fab=fopen("Test 02 Scores.txt","r");
fscanf(fab,"%d", &stock3[DataCount].def3);
fclose(fab);

total=total+stock3[DataCount].def3;

fac=fopen("Test 03 Scores.txt","r");
fscanf(fac,"%d", &stock3[DataCount].def3);
fclose(fac);
total=total+stock3[DataCount].def3;
printf("Total = %d\n",total);
DataCount=DataCount+1;
getch();
}
while(!feof(faa));

getch();
}

但是,出现了一个问题,程序在完成第一次循环后不会读取文件的第 2、3...n 行,因此程序只会打印与第一行相同的和。

忽略无限循环(稍后可以修复)我该如何解决这个问题?

旁注:请原谅我臭名昭著的 while(!EOF) 使用

文件内容:

1
2
3
4
5

预期输出

3
6
9
12
15

实际输出

3
3
3
3
3
3
3
3
3
3
3
3
...
...

谢谢,已修复:D

最佳答案

由于您在每次迭代中打开和关闭文件,因此您始终读取每个文件的第一行。这就是这两个问题的原因:您会陷入无限循环,因为您永远不会到达 EOF 并且您总是对第一行中的条目进行求和。您应该在循环进入之前打开所有文件,然后关闭它们。您还应该检查是否至少有一个文件已达到 EOF(不仅是第一个文件),以便在它们具有不同长度时捕获这种情况,并将检查移动到循环的开头(如果文件为空)。

关于c - 添加分数的程序不会从 C 的每一行中获取?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22993901/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com