首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

文件读操作,为什么进入死循环?有代码。下个帖子发错了

2012-08-01 
文件读操作,为什么进入死循环?有代码。上个帖子发错了。代码是这样的C/C++ code#includestdio.htypedef st

文件读操作,为什么进入死循环?有代码。上个帖子发错了。
代码是这样的

C/C++ code
#include<stdio.h>typedef struct node{int id;char name[20];int age;char pwd[6];char tag[100];}USER;void main(){    FILE *fp;    USER user;    char ch,l[300];    char input;    char *u[5]={"id","name","age","pwd","tag"};    int i=0,j=0;    if((fp=fopen("USER.txt","w+"))==NULL)    {        printf("failed to open file!");        return;    }    fprintf(fp,"id\tname\tage\tpwd\ttag\n");    for(j=0;j<1;j++)    {    printf("please input your %s:\n",u[i]);    scanf("%d",&user.id);    fflush(stdin);    fprintf(fp,"%d\t",user.id);    printf("please input your %s:\n",u[++i]);    scanf("%s",&user.name);    fflush(stdin);    fprintf(fp,"%s\t",user.name);    printf("please input your %s:\n",u[++i]);    scanf("%d",&user.age);    fflush(stdin);    fprintf(fp,"%d\t",user.age);    printf("please input your %s:\n",u[++i]);    scanf("%s",&user.pwd);    fflush(stdin);    fprintf(fp,"%s\t",user.pwd);    printf("please input your %s:\n",u[++i]);    scanf("%s",&user.tag);    fflush(stdin);    fprintf(fp,"%s\t\n",user.tag);    }    fclose(fp);    if((fp=fopen("USER.txt","r"))==NULL)    {        printf("failed to open file!");        return;    }    printf("\t\t**********所有文件信息如下**********\t\t");    while(fscanf(fp,"user.id=%d user.name=%s\n",&user.id,&user.name)!=EOF)    {        i++;        printf("user.id=%d\tuser.name=%s\n",user.id,user.name);    }    fclose(fp);}


是一个结构体。重要的是在输入结构体信息之前文件中先写入了作为标题的字符。这样取出来的结构体字符没有EOF了。请教大家了!

[解决办法]
参考:
把结构用二进制方式写入文件,并读出来
[解决办法]
把结构体 用二进制写到文件里面 写之前你要把结构体的长度算出来也存进去 读的时候先度出来长度 在read
就知道要读多长了!!

热点排行