| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1109 人关注过本帖
标题:为何读不出文件中的数据
只看楼主 加入收藏
zhaoyg
Rank: 1
等 级:新手上路
帖 子:328
专家分:0
注 册:2006-8-28
收藏
 问题点数:0 回复次数:12 
为何读不出文件中的数据

我想将链表中的数据保存在文件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)

搜索更多相关主题的帖子: 数据 文件 
2007-10-19 20:15
永夜的极光
Rank: 6Rank: 6
等 级:贵宾
威 望:27
帖 子:2721
专家分:1
注 册:2007-10-9
收藏
得分:0 
多了个逗号?还有把空格去掉试试

从BFS(Breadth First Study)到DFS(Depth First Study)
2007-10-19 20:46
zhaoyg
Rank: 1
等 级:新手上路
帖 子:328
专家分:0
注 册:2006-8-28
收藏
得分:0 
都不行的

麻雀飞上枝头变凤凰,而菜鸟的我飞上枝头却感冒了,为什么我的脑袋如此的不管用呢。
2007-10-19 22:43
zxc1998
Rank: 1
等 级:新手上路
威 望:1
帖 子:133
专家分:0
注 册:2007-3-21
收藏
得分:0 

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

2007-10-19 22:49
永夜的极光
Rank: 6Rank: 6
等 级:贵宾
威 望:27
帖 子:2721
专家分:1
注 册:2007-10-9
收藏
得分:0 
欧,对啊,我也老忘记这个。。。

从BFS(Breadth First Study)到DFS(Depth First Study)
2007-10-19 22:51
zhaoyg
Rank: 1
等 级:新手上路
帖 子:328
专家分:0
注 册:2006-8-28
收藏
得分:0 
name是一个字符串数组应该不用,至于%f我加了&,但还是没有

麻雀飞上枝头变凤凰,而菜鸟的我飞上枝头却感冒了,为什么我的脑袋如此的不管用呢。
2007-10-19 23:05
zxc1998
Rank: 1
等 级:新手上路
威 望:1
帖 子:133
专家分:0
注 册:2007-3-21
收藏
得分:0 

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

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

2007-10-19 23:26
crazyboy216
Rank: 1
等 级:新手上路
帖 子:62
专家分:0
注 册:2007-6-28
收藏
得分:0 

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下是可以实现其功能的,看对楼主有什么帮助不

2007-10-20 08:53
crazyboy216
Rank: 1
等 级:新手上路
帖 子:62
专家分:0
注 册:2007-6-28
收藏
得分:0 
这个不要把他注销掉fprintf(fp,"%s","学号\t姓名\t性别\t语文\t英语\t数学\t均分\n");
加起来
2007-10-20 08:57
zhaoyg
Rank: 1
等 级:新手上路
帖 子:328
专家分:0
注 册:2006-8-28
收藏
得分:0 
我想起了一个事,就是用fprintf进行保存时它会将数值保存为字符串的形式,所以我想再用fscanf读取时就应该用%s来读取刚才所保存的数值了

麻雀飞上枝头变凤凰,而菜鸟的我飞上枝头却感冒了,为什么我的脑袋如此的不管用呢。
2007-10-20 09:34
快速回复:为何读不出文件中的数据
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016105 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved