| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 368 人关注过本帖
标题:关于文件读写问题,请教各位网友。。。
只看楼主 加入收藏
真的很菜
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:94
专家分:151
注 册:2012-2-18
结帖率:71.43%
收藏
已结贴  问题点数:20 回复次数:2 
关于文件读写问题,请教各位网友。。。
程序代码:
#include<stdio.h>
#include<stdlib.h>
struct student
{
    int num;
    char name[20];
    int remark;
};
int main()
{
    int max(struct student a[],int n);                //声明求最高成绩函数。
    int compare(struct student a[],int n);            // 声明比较函数。
    int rank(struct student a[],int n);               //声明分数等级函数。
    int i;
    struct student stu[100];
    FILE *fin,*fout; //定义文件指针。
    fout=fopen("stuout.txt","w");
    fin=fopen("stuin.txt","r");
    fout=fopen("stuout.txt","w");
    if((fout=fopen("stuout.txt","w"))==NULL)
    {
        printf("打开文件失败!");
        exit(0);
    }

    if((fin=fopen("stuin.txt","r"))==NULL)
    {
        printf("文件打开失败!\n");  
        exit(0);        //如果指针返回一个空值,输出文件打开失败,关闭所有文件
    }
    else
    {
        i=0;
        while(!feof(fin))
        {
            fscanf(fin,"%d%s%d",&stu[i].num,stu[i].name,&stu[i].remark);
            i++;
        }
    }
    for(i=0;i<100;i++)
        printf("%d  %s   %d\n",stu[i].num,stu[i].name,stu[i].remark);
    max(stu,100);
    compare(stu,100);
    rank(stu,100);
    printf("\n\n\n");
    return 0;
}
int max(struct student a[],int n)      //定义函数
{
    FILE *fout;
    fout=fopen("stuout.txt","w");
    struct student t;
    int i;
    t.remark=a[0].remark;
    for(i=1;i<n;i++)
    {
        if(t.remark<a[i].remark)
        {
            t.remark=a[i].remark;
        }
    }
    fprintf(fout,"%d  %s  %d\n",t.num,t.name,t.remark);
    printf("%d  %s  %d\n",t.num,t.name,t.remark);
   for(i=0;i<n;i++)
    {
        if(a[i].remark==t.remark)
        {
            fprintf(fout,"%d  %s  %d\n",a[i].num,a[i].name,a[i].remark);
            printf("%d  %s  %d\n",a[i].num,a[i].name,a[i].remark);
        }
    }
    return 0;
}
int compare(struct student a[],int n)      //定义与平均值比较的函数
{ 
    FILE *fout;
    fout=fopen("stuout.txt","w");
    int i, n1=0,n2=0,n3=0,sum=0,ave;
    for(i=0;i<n;i++)
        sum=a[i].remark;
    ave=sum/n;
    fprintf(fout,"平均成绩为:%d\n",ave);
    for(i=0;i<n;i++)
    {
        if(a[i].remark>ave)
            n1++;
    }

    fprintf(fout,"成绩高于平均成绩的学生人数:%d\t",n1);
    for(i=0;i<n;i++)
    {
        if(a[i].remark==ave)
            n2++;
    }
    fprintf(fout,"成绩等于平均成绩的学生人数: %d\t",n2);
    for(i=0;i<n;i++)
    {
        if(a[i].remark<ave)
            n3++;
    }
    fprintf(fout,"成绩低于平均成绩的学生人数: %d\t",n3);
    return 0;
}
int rank(struct student a[],int n)     //定义分数等级函数
{
    FILE *fout;
    fout=fopen("stuout.txt","w");
    int i,n1=0,n2=0,n3=0,n4=0,n5=0;
    float p1,p2,p3,p4,p5;
    for(i=0;i<n;i++)
    {
        if(a[i].remark>=90)
            n1++;
    }
    p1=(n1/n)*100;   
    for(i=0;i<n;i++)
    {
        if(a[i].remark>=80&&a[i].remark<90)
            n2++;
    }
    p2=(n2/n)*100;
    for(i=0;i<n;i++)
    {
        if(a[i].remark>=70&&a[i].remark<80)
            n3++;
    }
    p3=(n3/n)*100;
    for(i=0;i<n;i++)
    {
        if(a[i].remark>=60&&a[i].remark<70)
            n4++;
    }
    p4=(n4/n)*100;
    for(i=0;i<n;i++)
    {
        if(a[i].remark<60)
            n5++;
    }
    p5=(n5/n)*100;
    fprintf(fout,"优秀(90-100)人数: %d  百分比: 百分之%f\n",n1,p1);
    fprintf(fout,"良好(80-89)人数: %d  百分比: 百分之%f\n",n2,p2);
    fprintf(fout,"中等(70-79)人数: %d  百分比: 百分之%f\n",n3,p3);
    fprintf(fout,"及格(60-69)人数: %d  百分比: 百分之%f\n",n4,p4);
    fprintf(fout,"不及格(<60)人数: %d  百分比: 百分之%f\n",n5,p5);
    return 0;
}

磁盘里有stuin.txt和stuout.txt两个文件,stuin.txt中有原始数据,我想把处理过的数据存到stuout.txt文件中。但。。。。
我这里只有分数等级的人数能输出到stuout.txt文件中(但百分比都是0。000000),其他的两个函数处理的数据结果没输出到stuout.txt文件中,代码没错。为何?


搜索更多相关主题的帖子: color 
2012-06-05 00:48
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:20 
代码没错

我挺烦听到这话的。没有语法错误的代码就是正确的代码么?

先把你打开的文件用完后都关了。

重剑无锋,大巧不工
2012-06-05 08:30
真的很菜
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:94
专家分:151
注 册:2012-2-18
收藏
得分:0 
回复 2楼 beyondyf
   嗯,请问几个子函数都有一个文件指针指向同一个文件时却不能同时把数据写入文件,这又是为啥?是路径 问题吗?
2012-06-05 16:08
快速回复:关于文件读写问题,请教各位网友。。。
数据加载中...
 
   



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

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