#include<stdio.h> #include<string.h> #include<stdlib.h> struct student{ char number[10]; char name[15]; double cscore; double mathscore; double englishscore; double sum; struct student *next; }; struct student *getfiledata() { FILE *fp; struct student *head,*tail,*p; head=tail=p; if((fp=fopen("data.txt","r"))==NULL) { printf("File open error!\n"); exit(0); } while(!feof(fp)) { p=(struct student*)malloc(sizeof(struct student)); fscanf(fp,"%s%s%f%f%f%f",p->number,p->name,&p->cscore,&p->mathscore,&p->englishscore,&p->sum); if(head==NULL) head=p; else tail->next=p; tail=p; p->next=NULL; } if(fclose(fp)){ printf("Can not close the file!\n"); exit(0); } return head; } void numberchaxun(struct student *h) { struct student *p1=h; char number1[10]; int flag=0; printf("请输入要查询的学生的学号:");scanf("%s",number1); for(;p1!=NULL;p1=p1->next) if(strcmp(p1->number,number1)==0) { flag=1; printf("%s %s %f %f %f %f",p1->number,p1->name,p1->cscore,p1->mathscore,p1->englishscore,p1->sum); break; } if(!flag)printf("没有该学号\n"); } void main() { numberchaxun(getfiledata()); }出现了什么错误,不能打印
时间: 2024-03-04 09:48:14 浏览: 142
#include<stdio.h>
根据代码分析,可能是因为输出语句中缺少换行符导致输出不正常。你可以在输出语句的最后加上换行符`\n`来解决这个问题,例如:
```
printf("%s %s %f %f %f %f\n",p1->number,p1->name,p1->cscore,p1->mathscore,p1->englishscore,p1->sum);
```
另外,建议在程序结束时释放动态申请的内存,避免内存泄漏。可以在`getfiledata()`函数中添加如下语句:
```
if(p != NULL) {
free(p);
}
```
这样可以释放最后一次循环中申请的内存。
阅读全文