| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 288 人关注过本帖
标题:文件读写问题
只看楼主 加入收藏
锋了
Rank: 7Rank: 7Rank: 7
来 自:向日葵幼儿园
等 级:黑侠
威 望:2
帖 子:306
专家分:586
注 册:2012-10-27
结帖率:88.89%
收藏
已结贴  问题点数:20 回复次数:8 
文件读写问题
声明
#define N 80
#define M 10
typedef struct
{
   
    int record[M];        /* 科目成绩  */
    float score;            /* 总分               */
    float aver;             /* 平均分             */
   
}MANAGE;
MANAGE *stu[N];
打开文件
FILE*fp
if((fp=fopen("data.dat","wb+"))==NULL)

读取文件 n是后面输入的一个小于N的值,m是后面输入小于M的值
    for(i=0;i<n;i++)
    {
        fprintf(fp,"%-15s%-20s",stu[i]->num,stu[i]->name);   
        for(int j=0;j<m;j++)
            fprintf(fp,"%-4d",stu[i]->record[i]);            
        fprintf(fp,"%-6.1f%-7.2f",stu[i]->score,stu[i]->aver);   
        fprintf(fp,"\r\n");
    }

打开文件
    FILE*fp;
    if((fp=fopen("data.dat","rb+"))==NULL)

读取文件
    for(i=0;i<n;i++)
    {
        stu[i]=(MANAGE *)malloc(sizeof(MANAGE));   
        fscanf(fp,"%15s%20s",stu[i]->num,stu[i]->name);   
        for(int j=0;j<m;j++)
            fscanf(fp,"%4d",&stu[i]->record[j]);
           
        fscanf(fp,"%6.1f%7.2f",stu[i]->score,stu[i]->ave);    //这里加寻址符“&”&stu->score也是同一问题)  
        
    }
写入没有问题
当循环第一次前面几项没有问题,当读取到stu[i]->score,stu[i]->aver这两项时就读成了
-431602080.0 -431602080.00
后面读取的就全乱了,求解啊!!!用的是VC编的。

[ 本帖最后由 锋了 于 2012-11-30 09:29 编辑 ]
2012-11-29 20:33
w527705090
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:11
帖 子:441
专家分:1882
注 册:2011-6-28
收藏
得分:20 
帮顶啊。。。请大神出山。。。

有心者,千方百计;无心者,千难万难。
2012-11-29 22:54
锋了
Rank: 7Rank: 7Rank: 7
来 自:向日葵幼儿园
等 级:黑侠
威 望:2
帖 子:306
专家分:586
注 册:2012-10-27
收藏
得分:0 
回复 2楼 w527705090
你也是大神啊!!!!帮看看啊!!
2012-11-30 09:29
lxsjzbd
Rank: 4
来 自:河北省
等 级:业余侠客
帖 子:97
专家分:258
注 册:2012-3-31
收藏
得分:0 
看看fscanf()的用法吧
2012-11-30 10:13
锋了
Rank: 7Rank: 7Rank: 7
来 自:向日葵幼儿园
等 级:黑侠
威 望:2
帖 子:306
专家分:586
注 册:2012-10-27
收藏
得分:0 
回复 4楼 lxsjzbd
能具体点吗
2012-11-30 10:29
lxsjzbd
Rank: 4
来 自:河北省
等 级:业余侠客
帖 子:97
专家分:258
注 册:2012-3-31
收藏
得分:0 
fscanf以空格或回车为终止,不能限制精度和宽度,就像scanf和printf
2012-11-30 10:44
锋了
Rank: 7Rank: 7Rank: 7
来 自:向日葵幼儿园
等 级:黑侠
威 望:2
帖 子:306
专家分:586
注 册:2012-10-27
收藏
得分:0 
回复 6楼 lxsjzbd
scanf和printf都可以限制精度的吧!
像scanf("%10s",string);printf("%10s",string);
2012-11-30 11:18
锋了
Rank: 7Rank: 7Rank: 7
来 自:向日葵幼儿园
等 级:黑侠
威 望:2
帖 子:306
专家分:586
注 册:2012-10-27
收藏
得分:0 
哦,明白的,刚才误解你的意思了。
结果证明你是对的,原来fscanf()是不能使用小数点精确的精度的啊
困惑好久,原来出在这么显眼有理所应当的地方,非常感谢!!
2012-11-30 11:21
快速回复:文件读写问题
数据加载中...
 
   



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

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