如何在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
,最好在循环条件中检查。
我尝试了一个简单的 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
,最好在循环条件中检查。