| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 417 人关注过本帖
标题:用结构体将信息写入文件 求大家帮我修改一下
只看楼主 加入收藏
Ljldym
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2015-5-9
结帖率:57.14%
收藏
已结贴  问题点数:5 回复次数:3 
用结构体将信息写入文件 求大家帮我修改一下
题目  输入一组学生的姓名和三科成绩,将信息储存在磁盘文件f1.dat中  当输入学号为0是,输入结束
#include"stdio.h"
#include"stdlib.h"
#define N 3
struct stu
{
    char nam[10];
    int xh;
    int sco[3];
};
void main()
{
    int i,k,j,temp;
    FILE *fp;
    struct stu s[N];
    for(i=0;i<N;i++)
    {
        printf("Input name:\n");
        gets(s[i].nam);
        printf("Input xh:\n");fflush(stdin);
        scanf("%d",&s[i].xh);
        for(k=0;k<3;k++)
        {
            printf("Input a score:\n");
            scanf("%d",&s[i].sco[k]);
        }
    }
    fopen("D:\\c\\f1.dat","wb");
    if(fp==NULL){printf("Faild");exit(0);}
        i=0;
        temp=s[i].xh;
        while(temp!=0)
        {
            fwrite(&s[i].nam,sizeof(char),1,fp);
            fwrite(&s[i].xh,sizeof(int),1,fp);
            for(j=0;j<3;j++)
                fwrite(&s[i].sco[j],sizeof(int),1,fp);
            i++;
            temp=s[i].xh;
        }
    fclose(fp);
}



[ 本帖最后由 Ljldym 于 2015-5-9 16:57 编辑 ]
2015-05-09 16:38
wmf2014
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:216
帖 子:2039
专家分:11273
注 册:2014-12-6
收藏
得分:5 
几处错误:
1,scanf函数不处理回车符,被下一次的gets函数获取,除第一次外,后面的gets将得不到name,需要加fflush(stdin)清空输入缓冲区
2,fopen取得的文件句柄未赋值给fp,以后的文件读写无依据,会出错对出。
3,只要给够足够的空间,数组可以作为一条记录一次性输入,无需逐个写入。
修改后代码如下(vc6++下测试成功):
程序代码:
#include"stdio.h"
#include"stdlib.h"
#define N 3
struct stu
{
    char nam[10];
    int xh;
    int sco[3];
};
void main()
{
    int i,k,j,temp;
    FILE *fp;
    struct stu s[N];
    for(i=0;i<N;i++)
    {
        fflush(stdin);
        printf("Input name:\n");
        gets(s[i].nam);
        printf("Input xh:\n");
        scanf("%d",&s[i].xh);
        for(k=0;k<3;k++)
        {
            printf("Input a score:\n");
            scanf("%d",&s[i].sco[k]);
        }
    }
    fp=fopen("e:\\f1.dat","wb");
    if(fp==NULL){printf("Faild");exit(0);}
    fwrite(s,sizeof(s),1,fp);
    fclose(fp);
}

 

能编个毛线衣吗?
2015-05-09 17:30
Ljldym
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2015-5-9
收藏
得分:0 
回复 2楼 wmf2014
解释的太全面了。。啥都不说了。。
2015-05-09 17:37
Ljldym
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2015-5-9
收藏
得分:0 
回复 2楼 wmf2014
但是“当输入的学号为0时,输入结束”这个条件怎么实现呢
2015-05-09 19:15
快速回复:用结构体将信息写入文件 求大家帮我修改一下
数据加载中...
 
   



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

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