关于c语言读取文本数据到结构体的问题

请大神帮忙看看哪出了问题,文本数据中间用的是制表符,为什么运行出来却很乱。... 请大神帮忙看看哪出了问题,文本数据中间用的是制表符,为什么运行出来却很乱。 展开
 我来答
WMYUOM
2019-06-05 · TA获得超过350个赞
知道小有建树答主
回答量:435
采纳率:78%
帮助的人:204万
展开全部

用错函数了。fread的第一个参数是数组,不是结构体。

用fscanf的格式化可以对应每一项数据对应的读入结构体的每一个成员中。

我只给txt中写了三行数据,测试一下效果。

#include<stdio.h>
#define N 10
struct plan{
 char ID[6];
 char outset[10];
 char destination[10];
 char sech[6];
 int seatnum;
 int pnum;
}plandata[N]; 
main() {
 FILE*fp;
 if((fp=fopen("plan.txt","r"))==NULL){
  printf("无法打开文件。\n");
  return; 
 }
 printf("\n航班号\t出发地\t终点\t时间\t座位数\t剩余票数\n");
 int i=0;
 while(!feof(fp)){
  fscanf(fp,"%s\t%s\t%s\t%s\t%d\t%d",plandata[i].ID,plandata[i].outset,plandata[i].destination,plandata[i].sech,&plandata[i].seatnum,&plandata[i].pnum);
  printf("%s\t%s\t%s\t%s\t%d\t%d\n",plandata[i].ID,plandata[i].outset,plandata[i].destination,plandata[i].sech,plandata[i].seatnum,plandata[i].pnum);
  i++;
 }
 fclose(fp);
}

运行结果如图

更多追问追答
追问
谢谢大神了,再请教一个问题。用了上述代码之后,我在主函数声明它,然后是不是直接可以用plandata【i】来拿出某一组数据,用在订票或者找查功能上?
追答
所有数据都在结构体数组中了,查找就是遍历结构体数组。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式