有关fscanf()函数的问题,请高手达人千万要帮忙

来源:百度知道 编辑:UC知道 时间:2024/05/29 17:55:04
#include<stdio.h>
struct date{
int year;
int month;
int day;
};
struct student{
char no[9];
char name[9];
char sex[3];
struct date birthday;
int score[4];

};
struct student stu[30];
main()
{
int i;
FILE *fp;
fp=fopen("D:\\shuju.txt","r");
if(fp==NULL)
{
printf("can not open!");
exit(1);

}
while(!feof(fp))
{
for(i=0;i<30;i++)
fscanf(fp,"%s%s%s%d%d%d%f%f%f%f\n",
stu[i].no,stu[i].name,stu[i].sex,&stu[i].birthday.year,&stu[i].birthday.month,&stu[i].birthday.day,&stu[i].score[0],&stu[i].score[1],&stu[i].score[2],&stu[i].score[3]);
}
printf("%s",stu[0].name);
fclose(fp);
}
其中 shuju.txt 文件里内容为:
01 王者 男 2000 09 10 15 80 70 90 240
02 周爱 女 2001 05 12 25 90 80 80 250
————————————————————————————
问题:貌似 fsca

fscanf(fp,"%s %s %s %d %d %d %f %f %f %f\n",..

数据空白隔开: 2000 09 10 15 80 70 90 240
输入格式 --用空白隔开 !

主要问题是你的整型数据用%f来读取了,应该是%d,其它你可以当没问题

还有一个问题就是你的数据文件里多了一个数据,应该是这样:
01 王者 男 2000 09 10 15 80 70 90
02 周爱 女 2001 05 12 25 90 80 80

另外我给你把读取数据的地方也稍作修改了一下

#include<stdio.h>
#include<stdlib.h>

struct date{
int year;
int month;
int day;
};
struct student{
char no[9];
char name[9];
char sex[3];
struct date birthday;
int score[4];

};
struct student stu[30];
int main()
{
int i=0,j;
FILE *fp;
fp=fopen("D:\\shuju.txt","r");
if(fp==NULL)
{
printf("can not open!");
exit(1);

}
while(!feof(fp))
{
fscanf(fp,"%s%s%s%d%d%d%d%d%d%d",
stu[i].no,stu[i].name,stu[i].