| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4212 人关注过本帖
标题:关于结构体存储到文件中并输出
取消只看楼主 加入收藏
ccc菜鸟,
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2015-11-20
结帖率:75%
收藏
已结贴  问题点数:4 回复次数:12 
关于结构体存储到文件中并输出
初学者不是很懂,我在做学生管理系统,但是我的疑问是如果我将值赋到结构体里为何还要赋值到文件里呢?如果赋值到文件又该怎么赋值并输出呢?
附上我的程序,请大神指教。
#include<stdio.h>
#include<stdlib.h>
struct info
{
    float a;
    char b[40];
    char c[40];
    char d[40];
    float e;
    float f;
    float g;
    float h;
    float i;
    float j;
};
struct info info[10000];
int record(int i){
    printf("input your id\n");
    scanf("%f", &info[i].a);
    printf("input your firstname\n");
    scanf("%s", &info[i].b);
    getchar();
    printf("input your lastname\n");
    scanf("%s", &info[i].c);
    getchar();
    printf("input your e-mail\n");
    scanf("%s", &info[i].d);
    getchar();
    printf("input your a\n");
    scanf("%f", &info[i].e);
    printf("input your b\n");
    scanf("%f", &info[i].f);
    printf("input your c\n");
    scanf("%f", &info[i].g);
    printf("input your d\n");
    scanf("%f", &info[i].h);
    printf("input your e\n");
    scanf("%f", &info[i].i);
    printf("input your f\n");
    scanf("%f", &info[i].j);
    FILE*fp;
    if ((fp = fopen("1.text", "wb")) == NULL){
        printf("wrong");
    }
    fwrite(&info[i], sizeof(info[i]), i, fp);
}
int find(int id){
    int i = 0;
    for (i = 0; i < 1000; i++)
    {
        if (id == info[i].a){
            return i;
            break;
        }
    }
    return -1;
}
int mark(int i){
    return(info[i].e + info[i].f + info[i].g + info[i].h + info[i].i + info[i].j) / 6;
}
display(int z){
    FILE*fp;
    if ((fp = fopen("1.text", "r+")) == NULL){
        printf("wrong");
    }
    fprintf(fp,"%s",info[z].b);
}

int main(){
    int choose;
    int j = 0;
    FILE*fp;
    while (1){
        printf("choose\n");
        scanf("%d", &choose);
        switch (choose)
        {
        case 1:j = j + 1; record(j);break;
        case 2:printf("please enter your id\n"); int ID; scanf("%d", &ID); int z = find(ID); int y = mark(z); printf("%d\n", y); display(z); break;
        default:break;
        }
    }
}
搜索更多相关主题的帖子: include 管理系统 record 结构体 
2015-11-25 20:52
ccc菜鸟,
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2015-11-20
收藏
得分:0 
有人帮忙吗,谢谢了!
2015-11-25 22:38
ccc菜鸟,
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2015-11-20
收藏
得分:0 
回复 3楼 TonyDeng
大神不是特别懂你的意思啊。。
2015-11-25 22:50
ccc菜鸟,
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2015-11-20
收藏
得分:0 
回复 3楼 TonyDeng
现在在自学文件,但是结构体就会每次输入时赋值并且保存啊。
2015-11-25 22:51
ccc菜鸟,
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2015-11-20
收藏
得分:0 
回复 6楼 TonyDeng
嗯嗯,有点明白,储存在.text作业要求之一。但是结构体不是要储存在二进制的文件中嘛?
2015-11-25 22:55
ccc菜鸟,
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2015-11-20
收藏
得分:0 
回复 7楼 TonyDeng
没有。现在自学c 2个月,老师只讲了文件概念,让我们自己摸索。
2015-11-25 22:57
ccc菜鸟,
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2015-11-20
收藏
得分:0 
回复 10楼 TonyDeng
那么当我输入结构体并保存在文件中用fwrite,输出是用fprintf吗?
2015-11-25 23:15
ccc菜鸟,
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2015-11-20
收藏
得分:0 
回复 12楼 TonyDeng
请您帮我看下,这是我写的输出函数
display(int z){
    FILE*fp;
    fp = fopen("1.text", "wb");
    if ((fp = fopen("1.text", "wb")) == NULL){
        printf("wrong");
    }
    fread(&info[z], sizeof(info[z]), z, fp);
    fprintf(fp,"%s",info[z].b);
}
这段是键入档案后储存到文件中
FILE*fp;
    if ((fp = fopen("1.text", "wb")) == NULL){
        printf("wrong");
    }
    fwrite(&info[i], sizeof(info[i]), i, fp);
可是fprintf依旧什么都不能输出啊。
2015-11-25 23:25
ccc菜鸟,
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2015-11-20
收藏
得分:0 
回复 14楼 TonyDeng
数据块是指结构体里的元素吗?
2015-11-26 00:07
ccc菜鸟,
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2015-11-20
收藏
得分:0 
回复 16楼 TonyDeng
“本次操作寫出多少個數據塊”指的是什么?结构体元素还是指第几个结构?
2015-11-26 00:11
快速回复:关于结构体存储到文件中并输出
数据加载中...
 
   



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

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