请问为什么加了循环就没有输出了?
note文件内容为:
215967号 玩具集装箱从HongKong运输到SanFrancisco,2023.5.12入库储存在5a56处,未出库.21967号 玩具集装箱从HongKong运输到SanFncisco,2023.5.12入库储存在5a56处,2023.5.19出库.2167号 玩具集装箱从Hongng运输到SanFrancisco,2023.5.1入库储存在5a6处,未出库.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_LINE_LENGTH 200
struct Goods {
int id;
char name[50];
char from[50];
char to[50];
char address[50];
char in_date[20];
char out_date[20];
};
int main(){
FILE *fp;
char line[MAX_LINE_LENGTH];
struct Goods goods[100];
char *token;
int n=0;
fp=fopen("note.txt","r");
if(fp==NULL){
fprintf(stderr,"Cannot open file.\n");
exit(1);
}
fgets(line,MAX_LINE_LENGTH, fp);
while (fgets(line, MAX_LINE_LENGTH,fp)!=NULL) {
token=strtok(line,"号");
goods[n].id=atoi(token);
token=strtok(NULL,",");
sscanf(token,"%[^ ] %[^从]从 %[^运]运输到%[^到]",goods[n].name,goods[n].name,goods[n].from,goods[n].to);
token=strtok(NULL,",");
sscanf(token,"%[^入]入库储存在%[^处]",goods[n].in_date,goods[n].address);
token=strtok(NULL, ",");
sscanf(token,"%[^出] ",goods[n].out_date);
n++;
if(n>=100){
break;
}
}
fclose(fp);
for(int j=0;j<n;j++){
printf("Id:%d\n", goods[j].id);
printf("Name:%s\n", goods[j].name);
printf("From:%s\n", goods[j].from);
printf("To: %s\n", goods[j].to);
printf("Address:%s\n", goods[j].address);
printf("In date:%s\n", goods[j].in_date);
printf("Out date:%s\n", goods[j].out_date);
}
return 0;
}
fgets是按行截取的,若文本行没有特意分行,可能就会出错