| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 709 人关注过本帖
标题:为什么读入文件的内容不能正确的读出来?
只看楼主 加入收藏
蚕头燕尾
Rank: 10Rank: 10Rank: 10
来 自:Gryffindo
等 级:贵宾
威 望:12
帖 子:734
专家分:1546
注 册:2013-3-24
结帖率:96.08%
收藏
已结贴  问题点数:10 回复次数:8 
为什么读入文件的内容不能正确的读出来?
/*
2. 程序设计。
有5 个学生,每个学生有3 门课的成绩,从键盘输入以上数据(包括学号、姓名、3
门课成绩),计算出平均成绩。
(1)将原有数据和计算出的平均分数存放在磁盘文件stud.txt中。在向文件stud.txt
写入数据后,应检查验证stud.txt 文件中的内容是否正确。
(2)将stud.txt 文件中的学生数据,按平均分进行排序处理,将已排序的学生数据存入
一个新文件stu_sort.txt 中。
*/
#include<stdio.h>
#include<stdlib.h>

struct student
{
    int num;
    char name[20];
    float chinese;
    float math;
    float english;
}stu[5];

//student stu[5];
float avrmber[5];
int main()
{
    float avr(float a,float b,float c);

    int i;
    FILE *fp;
   
    if(!(fp=fopen("stud.txt","w")))
    {
        exit(0);
    }

    for(i=0;i<5;i++)
    {
        scanf("%d %s %f %f %f",&stu[i].num,&stu[i].name,&stu[i].chinese,&stu[i].math,&stu[i].english);
        fprintf(fp,"%d %s %.2f %.2f %.2f %.2f",stu[i].num,stu[i].name,stu[i].chinese,stu[i].math,stu[i].english,avr(stu[i].chinese,stu[i].math,stu[i].english));
        //fprintf(fp,"\n");
    }
    fclose(fp);

    fp=fopen("stud.txt","r");
    for(i=0;i<5;i++)
    {
        fscanf(fp,"%d %s %f %f %f",&stu[i].num,&stu[i].name,&stu[i].chinese,&stu[i].math,&stu[i].english);
        fscanf(fp,"%f",&avrmber[i]);        
    }
    fclose(fp);

    //核对信息是否正确
    printf("请核对信息是否正确。\n");
    for(i=0;i<5;i++)
    {
        printf("%d %s %.2f %.2f %.2f %.2f",stu[i].num,stu[i].name,stu[i].chinese,stu[i].math,stu[i].english,avrmber[i]);
        printf("\n");
    }


    return 0;
}

float avr(float a,float b,float c)
{
    return (a+b+c)/3;
}

我打开文件发现文件内容是对的

可是读出的时候avrmber的值是不对(输出内容跟文件内容不符)



搜索更多相关主题的帖子: english include 程序设计 键盘 姓名 
2013-06-22 19:30
蚕头燕尾
Rank: 10Rank: 10Rank: 10
来 自:Gryffindo
等 级:贵宾
威 望:12
帖 子:734
专家分:1546
注 册:2013-3-24
收藏
得分:0 
到底为什么啊。。。


学习编程,为的是表达自己的思想,而不是被别人的思想所禁锢。要先明白自己想干嘛,而不要先问别人让你干嘛。               

                                                                                                                    Black Cat      Hello Tomorrow~
2013-06-22 21:50
NBABOY
Rank: 4
等 级:业余侠客
威 望:4
帖 子:129
专家分:281
注 册:2013-5-2
收藏
得分:2 
fprintf格试有问题
2013-06-22 22:46
VRML_0504
Rank: 2
等 级:论坛游民
威 望:1
帖 子:23
专家分:81
注 册:2013-6-7
收藏
得分:8 
===================================================================================================
for(i=0;i<5;i++)
     {
         scanf("%d %s %f %f %f",&stu[i].num,&stu[i].name,&stu[i].chinese,&stu[i].math,&stu[i].english);
         fprintf(fp,"%d %s %.2f %.2f %.2f %.2f\n",stu[i].num,stu[i].name,stu[i].chinese,stu[i].math,stu[i].english,avr(stu[i].chinese,stu[i].math,stu[i].english));
         //fprintf(fp,"\n");
     }
     fclose(fp);
====================================================================================================
 在fprintf(fp,"%d %s %.2f %.2f %.2f %.2f\n")格式输出时添加一个换行符就OK
2013-06-22 23:20
蚕头燕尾
Rank: 10Rank: 10Rank: 10
来 自:Gryffindo
等 级:贵宾
威 望:12
帖 子:734
专家分:1546
注 册:2013-3-24
收藏
得分:0 
回复 4楼 VRML_0504
为什么我把换行符单独写在下面一行代码里就是不对的呢?


学习编程,为的是表达自己的思想,而不是被别人的思想所禁锢。要先明白自己想干嘛,而不要先问别人让你干嘛。               

                                                                                                                    Black Cat      Hello Tomorrow~
2013-06-22 23:58
VRML_0504
Rank: 2
等 级:论坛游民
威 望:1
帖 子:23
专家分:81
注 册:2013-6-7
收藏
得分:0 
我测试了,换行符单独写在下面一行也是对的
2013-06-23 00:03
蚕头燕尾
Rank: 10Rank: 10Rank: 10
来 自:Gryffindo
等 级:贵宾
威 望:12
帖 子:734
专家分:1546
注 册:2013-3-24
收藏
得分:0 
嗯,谢了~

真是脑袋进水了,

本来写了换行,头一热就给注释掉了


学习编程,为的是表达自己的思想,而不是被别人的思想所禁锢。要先明白自己想干嘛,而不要先问别人让你干嘛。               

                                                                                                                    Black Cat      Hello Tomorrow~
2013-06-23 00:06
蔡梓锋
Rank: 4
等 级:业余侠客
帖 子:106
专家分:202
注 册:2013-4-20
收藏
得分:0 
回复 7楼 蚕头燕尾
为什么是fp=fopen("stud.txt","r");好像书上都是fp=fopen("d:\\abc.txt","r");可以给我解释一下吗?还有输入完后,去哪里找stud.txt这个文件。

加油加油!
2013-06-23 08:52
蚕头燕尾
Rank: 10Rank: 10Rank: 10
来 自:Gryffindo
等 级:贵宾
威 望:12
帖 子:734
专家分:1546
注 册:2013-3-24
收藏
得分:0 
回复 8楼 蔡梓锋
你说的那种是绝对路径引用,

在实际编程中要尽量避免,

因为代码在你的机子上运行的时候可以在你的D盘里找到你想要的文件

可以如果在别的机子上运行,

就没有你找的文件了啊。。

所以要尽量采用“相对路径”引用的方法,

就像我写的那样子。

这个文件在你的解决方案里找

就是你当除把你的项目放在哪个路径下就到哪个路径下找。

都在一个文件夹里放着呢。



学习编程,为的是表达自己的思想,而不是被别人的思想所禁锢。要先明白自己想干嘛,而不要先问别人让你干嘛。               

                                                                                                                    Black Cat      Hello Tomorrow~
2013-06-23 10:10
快速回复:为什么读入文件的内容不能正确的读出来?
数据加载中...
 
   



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

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