当前位置: 代码迷 >> C语言 >> 为何读不出文件中的数据
  详细解决方案

为何读不出文件中的数据

热度:147   发布时间:2007-10-19 20:15:39.0
为何读不出文件中的数据

我想将链表中的数据保存在文件data.txt中,虽然写入的都是正确的,但当我再用自己编的读取时却读不出来。请大家帮忙看看

我的写入文件格式如下:

fprintf(save," %s %s %s %s %f",current->name ,current->author ,current->press ,current->ISBN,current->price);

我的读取:
fscanf(fpread,," %s %s %s %s %f",current->name ,current->author ,current->press ,current->ISBN,current->price)==5)

搜索更多相关的解决方案: 数据  文件  

----------------解决方案--------------------------------------------------------
多了个逗号?还有把空格去掉试试
----------------解决方案--------------------------------------------------------
都不行的
----------------解决方案--------------------------------------------------------

在用scanf、fscanf读入数据的时候,参数应该用数据的地址,
fscanf(fpread," %s %s %s %s %f",&current->name ,...)


----------------解决方案--------------------------------------------------------
欧,对啊,我也老忘记这个。。。

----------------解决方案--------------------------------------------------------
name是一个字符串数组应该不用,至于%f我加了&,但还是没有
----------------解决方案--------------------------------------------------------

对不起,没注意你是对字符串的输入输出,

对于字符串的输入输出,最好每个字符串占用一行,否则读的时候,会把整个一行都读入到name中。


----------------解决方案--------------------------------------------------------

int SaveStudent(Student *Q)
{
int i=0;
Student *p;
FILE *fp;
char open[20];
p=Q->next;
printf("请输入文件路径:");
scanf("%s",open);
if((fp=fopen(open,"w+"))==NULL)
{
printf("打开失败!");
return 0;
}
//fprintf(fp,"%s","学号\t姓名\t性别\t语文\t英语\t数学\t均分\n");

while(p!=NULL&&i<amount)
{
i++;
// fwrite(p,sizeof(Student),1,fp);

fprintf(fp,"%d\t%s\t%s\t%d\t%d\t%d\t%d\n",p->number,p->name,p->sex,p->Chinese,p->English,p->Match,p->average);
p=p->next;
}
fprintf (fp,"\0");
fclose(fp);
return 1;
}

void LoadStudent()
{
int flag=1;
char FileName[30];
Student *p;
FILE *fp=NULL;
//char *buffer;
printf("name:");
scanf("%s",FileName);
//buffer=(char *)malloc(255);

if((fp=fopen(FileName,"r+"))!=NULL)
{
fscanf(fp,"学号\t姓名\t性别\t语文\t英语\t数学\t均分\t\n");
printf("|学号\t|姓名\t|性别\t|语文\t|英语\t|数学\t|均分\t|\n");
while (!feof(fp))
{
p=(Student*)malloc(sizeof(Student));
fscanf(fp,"%d\t%s\t%s\t%d\t%d\t%d\t%d",&p->number,p->name,&p->sex,&p->Chinese,&p->English,&p->Match,&p->average);
printf("|%d\t|%s\t|%s\t|%d\t|%d\t|%d\t|%d\t|\n",p->number,p->name,p->sex,p->Chinese,p->English,p->Match,p->average);
getch();
}

}
else
printf("调出失败!");
fclose(fp);

}
这是我对论坛上那个学生信息管理系统不能实现的2个函数的修改,我在DEV 4.0下是可以实现其功能的,看对楼主有什么帮助不


----------------解决方案--------------------------------------------------------
这个不要把他注销掉fprintf(fp,"%s","学号\t姓名\t性别\t语文\t英语\t数学\t均分\n");
加起来
----------------解决方案--------------------------------------------------------
我想起了一个事,就是用fprintf进行保存时它会将数值保存为字符串的形式,所以我想再用fscanf读取时就应该用%s来读取刚才所保存的数值了
----------------解决方案--------------------------------------------------------
  相关解决方案