如何在c程序中读取文件时分离整数变量

how to distungish a integer variable while reading a file in c program

我尝试了一个简单的 c 程序从一个包含学生姓名和分数的文件中读取数据,我想计算学生的总分。执行我的代码时,输​​出显示为总计 = 0。 下面是我的代码:

#include<stdio.h>
int main(){
    FILE *file1;
    file1 = fopen("detail.txt","r");
    int marks, total = 0;
    while(fscanf(file1,"%d",&marks)!= EOF){
        total = total + marks;
    }
    printf("Total = %d\n",total);
    fclose(file1);
}

这是我的包含数据的文件:

john 25
Malik 78
smith 85
irik 85
hales 98

您还需要阅读字符串。否则,您将在第一次调用 fscanf 时尝试将字符串 john 读取为十进制整数,并且它将 return (不是EOF).

并且由于 fscanf 调用无法解析具有 %d 格式的第一个字符串,输入文件指针不会前进,因此下一次调用 fscanf 将尝试再次读取和解析字符串 john 并失败。等等……永远。

如果不需要,可以丢弃该字符串,这可以在 fscanf 格式字符串本身中完成:

fscanf(file1, "%*s %d", &marks)

如记录在例如this scanf (and family) reference 星号 * 是一个赋值抑制运算符,它读取和解析格式,但不分配给变量。

如果 fscanf 调用成功,它将 return 1,最好在循环条件中检查。