C语言 读取TXT文件并存入结构体数组

要读取的文件:(数据之间以制表符分割) 

定义结构体

struct trainFile
{
	char trainid[20];		//列车号	 
	char firststand[20];	//始发站 
	char middlestand[20];	//经停站			 
	char finalstand[20];	//终点站 
	char time_day[20];		//出发日期 
	char time_hour[20];		//出发时间 
	int prize;				//价格 
	int totalzw;			//总位置 
	int freezw;				//剩余位置 
};

文件读取并存入结构体数组:

struct trainFile readtrainFile(){
	struct trainFile train[15];//创建train结构体 
	FILE *fp = fopen("trainFile.txt", "r");// 打开文件并且让fp指向文件 
    if (fp == NULL) {
        fprintf(stderr, "文件打开失败.\n");
        exit(EXIT_FAILURE);
    }
    char row[80];
    char *token;
    int i=0;
    if(fgets(row, 80, fp) != NULL){
   	 	while (fgets(row, 80, fp) != NULL) {
      		sscanf(row,"%s%s%s%s%s%s%d%d%d",train[i].trainid,train[i].firststand,train[i].middlestand,train[i].finalstand,train[i].time_day,train[i].time_hour,&train[i].prize,&train[i].totalzw,&train[i].freezw);//把数据存入结构体数组 
      		printf("%s\t%s\t%s\t%s\t%s\t%s\t%d\t%d\t%d\n",train[i].trainid,train[i].firststand,train[i].middlestand,train[i].finalstand,train[i].time_day,train[i].time_hour,train[i].prize,train[i].totalzw,train[i].freezw);
    		i++;
		}
    }
    fclose(fp);
    return *train;
}

 完整代码:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct trainFile
{
	char trainid[20];		//列车号	 
	char firststand[20];	//始发站 
	char middlestand[20];	//经停站			 
	char finalstand[20];	//终点站 
	char time_day[20];		//出发日期 
	char time_hour[20];		//出发时间 
	int prize;				//价格 
	int totalzw;			//总位置 
	int freezw;				//剩余位置 
};
int main()
{
   struct trainFile train[15];//创建train结构体 
	FILE *fp = fopen("trainFile.txt", "r");// 打开文件并且让fp指向文件 
    if (fp == NULL) {
        fprintf(stderr, "文件打开失败.\n");
        exit(EXIT_FAILURE);
    }
    char row[80];
    char *token;
    int i=0;
    if(fgets(row, 80, fp) != NULL){
   	 	while (fgets(row, 80, fp) != NULL) {
      		sscanf(row,"%s%s%s%s%s%s%d%d%d",train[i].trainid,train[i].firststand,train[i].middlestand,train[i].finalstand,train[i].time_day,train[i].time_hour,&train[i].prize,&train[i].totalzw,&train[i].freezw);//把数据存入结构体数组 
      		printf("%s\t%s\t%s\t%s\t%s\t%s\t%d\t%d\t%d\n",train[i].trainid,train[i].firststand,train[i].middlestand,train[i].finalstand,train[i].time_day,train[i].time_hour,train[i].prize,train[i].totalzw,train[i].freezw);
    		i++;
		}
    }
    fclose(fp);
    return 0;

    
}

  • 70
    点赞
  • 666
    收藏
    觉得还不错? 一键收藏
  • 14
    评论
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值