C语言从文本文件提取信息赋值给结构体数组
int time
char type
int num
文本文件中每一行格式都是
t=1,a2
t=6,b8
怎么实现从文件读取一行数据,然后分别把t的值赋给time,把a赋给type,把2赋给num
额,文本文件格式应该是
t=1,r=a2
t=6,r=b8
这样 展开
用fscanf函数来读取
#include "stdio.h"
#define TOTALLINE 4//你的文件有多少行就定义成多少,我例子4 行
struct Mystruct
{
int time;
char type;
int num;
};
int main()
{
FILE *fp;
Mystruct s[TOTALLINE];
int i;
if((fp=fopen("in.txt","rt"))==NULL)
{
printf("cannot open file\n");
return 1;
}
for(i=0;i<TOTALLINE;i++)
{
fscanf(fp,"t=%d",&s[i].time);
fscanf(fp,",");
//如果是t=6,r=b8的格式,改成fscanf(fp,"r=%c",&s[i].type);
fscanf(fp,"%c",&s[i].type);
fscanf(fp,"%d",&s[i].num);
fscanf(fp,"\n");
}
for(i=0;i<TOTALLINE;i++)
{
printf("Time:%d\nType:%c\nNum:%d\n",s[i].time,s[i].type,s[i].num);
}
fclose(fp);
return 0;
}
结果:
我写的不是主函数,每需要读取一行就调用一次这个函数,这样的话就不需要循环和定义TOTALLINE是不是?
那还得加上定位文件指针位置,因为你肯定是想,读完一行,这个文件指针就应该指向下一行。