呜呜,请问我下面这个把文件数据写进链表的函数哪错了

void read(stuN*L)  //运行前把文件内容读取到电脑内存 
{   
    char snum[4];      
    char na[10];    
    char cl[20];   
    char ph[10];
      
    FP=fopen("DATA.txt","rb"); //以只读方式打开当前目录下的文件 
    if(FP==NULL)  
    {  
        printf("无法打开文件\n");  
        exit(0); //终止程序  
    } 
    while(!feof(FP))  
    {  stuN *n;
        fscanf(FP,"%s %s %s %s",snum,na,cl,ph);
       n=(stuN*)malloc(sizeof(stuN));    
       strcpy(n->data.stunum,snum);           //把后者的内容拷贝到前者中
       strcpy(n->data.name,na);
       strcpy(n->data.cla,cl);
       strcpy(n->data.phnum,ph);
       insert(L,n);   //插入新的结点
      
    } 
    fclose(FP);
}

大概率是fscanf(FP,"%s %s %s %s",snum,na,cl,ph);跟你的文件结构不一致大致的