请问为什么循环无输出?

请问为什么加了循环就没有输出了?
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处,未出库.

img


#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是按行截取的,若文本行没有特意分行,可能就会出错