基本上我需要扫描这个文件中的所有值...它几乎做到了,但它似乎跳过了随机值,所以它最终没有正确排列。 (这只是我需要为作业做的一部分,所以你不会“放弃答案”,我仍然想自己弄清楚,只需要一点帮助来弄清楚这个,因为我相当卡住)
代码如下:
int main()
{
FILE *fp;
char x[15];
float ID [1000];
int i=0, j=0;
float homework [1000];
float lab [1000];
float midterm [1000];
float Final [1000];
int count=0;
char headers[35];
char y;
fp= fopen("lab5_inputFile.txt", "r");
while (fscanf(fp, "%s", x)!=EOF){
if (count > 728){
fscanf(fp, "%f", &ID[i]);
printf("ID : %.1f\n", ID[i]);
fscanf(fp, "%f", &homework[i]);
printf("Homework: %.1f\n", homework[i]);
fscanf(fp, "%f", &lab[i]);
printf("lab: %.1f\n", lab[i]);
fscanf(fp, "%f", &midterm[i]);
printf("Midterm: %.1f\n", midterm[i]);
fscanf(fp, "%f", &Final[i]);
printf("Final: %.1f\n", Final[i]);
i++;
}
count ++;
}
printf("count = %d\n", count);
fclose(fp);
我只扫描了最后几个值以使其更易于阅读/调试,在实际代码中我只会跳过标题,在提交之前我还计划更改很多其他内容,比如我可能会使用指针类型和 malloc 而不是数组和其他一些东西,但我的主要问题是如何解决我在从文件读取到数组时遇到的问题。
提前致谢!
最佳答案
你每次都跳过第一行x
。您应该将其重写为:
char x[100];
/* while (fscanf(fp, "%s", x)!=EOF){ */
fgets(x, 100, fp); /* Skip first line */
for(; /* ever */; ) {
if(5 == fscanf(fp, "%f%f%f%f%f", &ID[i], &homework[i], &lab[i], &midterm[i], &Final[i])) {
printf("ID : %.1f\n", ID[i]);
printf("Homework: %.1f\n", homework[i]);
printf("lab: %.1f\n", lab[i]);
printf("Midterm: %.1f\n", midterm[i]);
printf("Final: %.1f\n", Final[i]);
i++;
} else break;
}
关于c - 为什么我的 fscanf 不断跳过随机数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27008915/