| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2452 人关注过本帖
标题:结构体文件的输出
只看楼主 加入收藏
彼岸光影
Rank: 2
等 级:论坛游民
帖 子:20
专家分:25
注 册:2012-6-4
结帖率:0
收藏
 问题点数:0 回复次数:6 
结构体文件的输出
#include<stdio.h>
#include<stdlib.h>
struct chengji{
    char name[100];
    char kemo[100];
    float value;
};
int main()
{
    struct chengji a;
    FILE *fp;
    if((fp=fopen("C:\\Users\\Devotion\\Desktop\\1.txt","wb"))==NULL)
    {
        fputs("error",stdout);
        exit (1);
    }
   
        
        printf("输入姓名");
            scanf("%s",a.name);
            printf("请输入科目");
            scanf("%s",a.kemo);
            printf("请输入分数");
            scanf("%f",&a.value);
            if(fwrite(&a,sizeof(struct chengji),1,fp)!=1)
            {
                printf("error");
                    exit(1);
            }
        
    fclose(fp);

    return 0;
}
麻烦大家看下错在什么地方了…………谢谢了 在线等
搜索更多相关主题的帖子: Desktop 姓名 include 结构体 
2012-07-31 20:41
流氓小强
Rank: 1
等 级:新手上路
帖 子:4
专家分:2
注 册:2012-7-31
收藏
得分:0 
#include<stdio.h>
#include<stdlib.h>
struct chengji{
    char name[100];
    char kemo[100];
    float value;
};
int main()
{
    struct chengji a;
    FILE *fp;
    if((fp=fopen("F:\\chengjiji.txt","wb"))==NULL)
    {
        fputs("error",stdout);
        exit (1);
    }
   
        
            printf("输入姓名,科目,分数:\n");
            scanf("%s,%s,%f",a.name,a.kemo,&a.value);
            
            //scanf("%s",a.kemo);
            
            //scanf("%f",&a.value);
            if(fwrite(&a,sizeof(struct chengji),1,fp)!=1)
            {
                printf("error");
                    exit(1);
            }
        
    fclose(fp);

    return 0;
}


知道这样改过来,知道是scanf函数那里有问题,但我说不清楚。呵呵 ,新手。望理解。
2012-07-31 21:09
随风飘荡
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:3
帖 子:208
专家分:598
注 册:2011-9-9
收藏
得分:0 
加上fflush(stdin);在每一个scanf()之后

原因是因为scanf(%s)会读取到第一个空格字符或者换行符停下,但那个字符又不会移出缓冲区。
所以下一个scanf就会从上面读剩下的开始读取。

不过很猎奇,坐等高手回答,在我测试过程中发现依旧可以正常读取
完了我混乱了...好吧容我试试


————————————————————————————————————————————
调试拯救世界,其实要说问题真正出问题是的你觉得成功的了那个

所有的输入包括逗号都被保存到结构体的name里面了,%s不遇到空格字符或者换行符是不会停止的
我果然还是不够老练,可爱的调试娘~

原本那个并没有问题,都能成功读取到结构体里,只不过在写到文件的时候连那些未被初始化的数据都写出来了而已,所以会很烫嗯....
另外主要的就是你按照二进制模式操作文件的,浮点数以及很多东西都并不会正确显示。
你可以以文本模式操作用fprintf()输入进去那样可能就有你想要的结果了
————————————————————————————————————————————


[ 本帖最后由 随风飘荡 于 2012-7-31 21:46 编辑 ]
2012-07-31 21:28
彼岸光影
Rank: 2
等 级:论坛游民
帖 子:20
专家分:25
注 册:2012-6-4
收藏
得分:0 
回复 2楼 流氓小强
还是有问题的
2012-07-31 21:40
彼岸光影
Rank: 2
等 级:论坛游民
帖 子:20
专家分:25
注 册:2012-6-4
收藏
得分:0 
回复 3楼 随风飘荡
你说的很对唉 总是出现烫…………怎么弄才不会出现……
2012-07-31 21:41
随风飘荡
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:3
帖 子:208
专家分:598
注 册:2011-9-9
收藏
得分:0 
if((fp=fopen("1.txt","w"))==NULL)

………………………………………………………………………………
………………………………………………………………………………

if(fprintf(fp,"%s %s %f  ",a.name,a.kemo,a.value) < 0)
2012-07-31 21:44
彼岸光影
Rank: 2
等 级:论坛游民
帖 子:20
专家分:25
注 册:2012-6-4
收藏
得分:0 
回复 3楼 随风飘荡
还是有的&&………………伤不起
2012-07-31 21:47
快速回复:结构体文件的输出
数据加载中...
 
   



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

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