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

定义结构体

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 #include #include 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;}