C语言从文本文件提取信息赋值给结构体数组

一个结构体数组成员表列有inttimechartypeintnum文本文件中每一行格式都是t=1,a2t=6,b8怎么实现从文件读取一行数据,然后分别把t的值赋给time... 一个结构体数组成员表列有
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
这样
展开
 我来答
百度网友6fe74e2
推荐于2016-08-02 · TA获得超过6593个赞
知道大有可为答主
回答量:1973
采纳率:100%
帮助的人:270万
展开全部

用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是不是?
追答
那还得加上定位文件指针位置,因为你肯定是想,读完一行,这个文件指针就应该指向下一行。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式