文件读操作,为什么进入死循环?有代码
代码:
- C/C++ code
#include<stdio.h>void main(){int stuid,stuscore,stunum,i;FILE *fp;printf("学生数:");scanf("%d",&stunum);if((fp=fopen("stu.txt","w"))==NULL){printf("can not open file\n");return;}printf("请输入%d个学生信息",stunum);for(i=0;i<stunum;i++){scanf("%d%d",&stuid,&stuscore);fprintf(fp,"stuid-%d\tstuscore-%d",stuid,stuscore);}fclose(fp);if((fp=fopen("stu.txt","r"))==NULL){printf("failede to open file!");return;}while(fscanf(fp,"%d%d",&stuid,&stuscore)!=EOF){ printf("stuid-%d\tstuscore-%d\n",stuid,stuscore);}fclose(fp);}打印文件内信息的时候,进入死循环,只打印最后一次输入的文件信息,之前的取不到值。
我看过寄存器和汇编窗口,好像打印的栈空间丢失了头部分,就从后面的文件信息开始输出了。不知道到底怎么回事。
[解决办法]
- C/C++ code
while(fscanf(fp,"stuid-%d stuscore-%d",&stuid,&stuscore)!=EOF)
[解决办法]
- C/C++ code
#include<stdio.h>void main(){ int stuid,stuscore,stunum,i; FILE *fp; printf("学生数:"); scanf("%d",&stunum); if((fp=fopen("stu.txt","w"))==NULL) { printf("can not open file\n"); return; } printf("请输入%d个学生信息",stunum); for(i=0;i<stunum;i++) { scanf("%d%d",&stuid,&stuscore); fprintf(fp,"stuid-%d\tstuscore-%d",stuid,stuscore); } fclose(fp); if((fp=fopen("stu.txt","r"))==NULL) { printf("failede to open file!"); return; } while(fscanf(fp,"stuid-%d\tstuscore-%d",&stuid,&stuscore)!=EOF) { printf("stuid-%d\tstuscore-%d\n",stuid,stuscore); } fclose(fp);}