读书人

资料读操作为什么进入死循环?有代码

发布时间: 2012-08-02 11:35:25 作者: rapoo

文件读操作,为什么进入死循环?有代码
代码:

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);} 

读书人网 >C语言

热点推荐