| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3032 人关注过本帖
标题:结构用fopen文本打开读写文件 fwrite函数保存的怎么就是乱码
只看楼主 加入收藏
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
你写这个程序,脑中有没有一个清晰的映像,数据是怎么储存的、如何访问读写数据、为什么要设计成这样的数据结构,这些都清晰吗?

授人以渔,不授人以鱼。
2013-02-07 19:50
心灯甚亮
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:2
帖 子:441
专家分:996
注 册:2013-1-29
收藏
得分:0 
孩子,我也初中没毕业
加油啊
英语平时也要积累滴
2013-02-07 19:58
心灯甚亮
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:2
帖 子:441
专家分:996
注 册:2013-1-29
收藏
得分:0 
既然学就学出水平,至少保证代码清晰啊
2013-02-07 20:03
xiao40201950
Rank: 1
等 级:新手上路
帖 子:14
专家分:4
注 册:2013-1-23
收藏
得分:0 
回复 8楼 TonyDeng
程序代码:
#include<stdio.h>
#include<stdlib.h>
#define SI 4 //最大书籍数量
typedef struct
   {
     char xing[20];
     char ming[20];
   }xing_ming;
     xing_ming jie_zuo_zhe;
//声明书籍信息结构 包含姓名结构
   typedef struct
   {
     char shu_ming[40];
     xing_ming jie_zuo_zhe;
     float jia_ge;    
   }book;
  //输入书籍信息函数
  void han_shu_ru(book *p)
  {
   puts("请输新入书籍名!");
   gets(p->shu_ming);
   puts("请输入作者的姓名!");
   scanf("%s%s",p->jie_zuo_zhe.xing,p->jie_zuo_zhe.ming);
   puts("请输入书籍的价格!");
   scanf("%f",&p->jia_ge);
  
  }
  //书籍信息写入文件
   void han_xie_ru(book *p)
   {
       FILE *fp;
       if((fp=fopen("d:\shu_ji.txt","a+"))==NULL||fwrite(p,sizeof(book),1,fp)!=1)
    puts("文件写入失败!");
    return 1; 
   }
//输出书籍信息
void han_shu_chu(book *p)
{printf("书籍的名称:%10s 书籍的作者:%6s%6s 书籍的价格:%10g\n",
  p->shu_ming,p->jie_zuo_zhe.xing,p->jie_zuo_zhe.ming,p->jia_ge);
} 
  int main(void)
  {
   book bop;

 // p=(book *)malloc(sizeof(book)) ;
  han_shu_ru(&bop);
  han_shu_chu(&bop);
  han_xie_ru(&bop);
  return 0;
  }
这样可以给我解答吗? 写入问件的还是乱码?
2013-02-07 20:58
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
han_xie_ru(&bop);
先不执行这一行,注释掉,看在屏幕上的输出是否正确。

授人以渔,不授人以鱼。
2013-02-07 21:04
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
你说的乱码是什么?那个价格的浮点数本来就应是乱码呀!

授人以渔,不授人以鱼。
2013-02-07 21:08
心灯甚亮
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:2
帖 子:441
专家分:996
注 册:2013-1-29
收藏
得分:0 
说实话fwrite我就没看过,不会用。。。。。。。。。
2013-02-07 21:10
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
fwrite()是把整个数据的内存映像写到磁盘上,那个浮点数不是可视的字符串,写出来你看肯定是乱码了,其余的字符串正确吗?

授人以渔,不授人以鱼。
2013-02-07 21:18
xiao40201950
Rank: 1
等 级:新手上路
帖 子:14
专家分:4
注 册:2013-1-23
收藏
得分:0 
回复 15楼 TonyDeng
屏幕输出正常 我试过的
图片附件: 游客没有浏览图片的权限,请 登录注册
2013-02-07 21:21
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
那是对的,字符串'\0'后的是乱码,浮点数也是乱码,写入是对的。

授人以渔,不授人以鱼。
2013-02-07 21:22
快速回复:结构用fopen文本打开读写文件 fwrite函数保存的怎么就是乱码
数据加载中...
 
   



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

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