| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 6251 人关注过本帖
标题:fwrite和fread出现乱码
只看楼主 加入收藏
cblovehh
Rank: 1
等 级:新手上路
帖 子:39
专家分:0
注 册:2008-10-14
收藏
得分:0 
哎,搞了半天了没搞出来,没明白呵呵,望高手解释下啊。。。

我是OVER!!!    我是OVER!!!    我是OVER!!!
2008-10-15 21:13
shade1220
Rank: 1
等 级:新手上路
帖 子:83
专家分:0
注 册:2008-8-5
收藏
得分:0 
#include <stdio.h>
#include <stdlib.h>
typedef struct z1
{
    int num;
    char name[12];
    float score;
   
}data;

int main(void)
{
   FILE *fp;
   data *info;
   char str[128];


   if ((fp=fopen("a.txt", "w+")) == NULL)
      
   {
     printf( "Cannot open input  file.\n");
      exit(1);
   }
   else
       printf( "File is ready for writing:");
   printf("\ninput:");
   info=(data *)malloc(sizeof(data));
   scanf("%d %s %f",&info->num,info->name,&info->score);
   //printf("%d %s %f\n",info->num,info->name,info->score);
   fprintf(fp,"%d %s %.2f\n",info->num,info->name,info->score);
   //fwrite(info,sizeof(data),1,fp);
   /*rewind(fp);
   fread(str,sizeof(data),1,fp);
   fprintf(fp,str);*/
   fclose(fp);
}
/************************************
fread()和fwrite()函数是随机读写函数,分别为读取一个流的n个项数据,每个项大小为elementsize,
文件指针随读取的字节数向后移动,返回读取的实际项数;向一个流写入n个项数据,每个项大小为elementsize,
文件指针随写入的字节数向后移动,返回写入的实际项数。
************************************/

踏踏实实学习,认认真真编程
2008-10-15 21:15
smltq
Rank: 6Rank: 6
等 级:侠之大者
威 望:8
帖 子:566
专家分:400
注 册:2008-1-21
收藏
得分:0 
scanf("%d %s %f",&info->num,info->name,&info->score);
输入的时候字符串和数值不能同行吧

简单的生活
2008-10-15 21:24
cblovehh
Rank: 1
等 级:新手上路
帖 子:39
专家分:0
注 册:2008-10-14
收藏
得分:0 
不是不允许,是你存的是二进制文件,显示当然是乱码了

我是OVER!!!    我是OVER!!!    我是OVER!!!
2008-10-15 21:27
cblovehh
Rank: 1
等 级:新手上路
帖 子:39
专家分:0
注 册:2008-10-14
收藏
得分:0 
#include <stdio.h>
#include <malloc.h>
typedef struct z1
{
    int num;
    char name[12];
    float score;
   
}data;

int main()
{
   FILE *fp;
   data *info;
   data *p;


   if ((fp=fopen("d:\\a.txt", "w"))==NULL)
      
   {
     printf( "Cannot open input  file.\n");
      exit(1);
   }
   printf("\n input:  ");
   info=(data *)malloc(sizeof(data));
   scanf("%d %s %f",&info->num,info->name,&info->score);
   fprintf(fp,"%d %s %f\n",info->num,info->name,info->score);
}
直接这样就可以写入文件了

我是OVER!!!    我是OVER!!!    我是OVER!!!
2008-10-15 21:30
smltq
Rank: 6Rank: 6
等 级:侠之大者
威 望:8
帖 子:566
专家分:400
注 册:2008-1-21
收藏
得分:0 
[bo][un]cblovehh[/un] 在 2008-10-15 21:27 的发言:[/bo]

不是不允许,是你存的是二进制文件,显示当然是乱码了


OVER兄弟,不会吧,跟这有什么关系?

简单的生活
2008-10-15 21:37
cblovehh
Rank: 1
等 级:新手上路
帖 子:39
专家分:0
注 册:2008-10-14
收藏
得分:0 
是的呀,就是这个关系啊fwrite只能写2进制啊+

而且他下面又加了个fprintf也是写文件,又给叠加掉了

[[it] 本帖最后由 cblovehh 于 2008-10-15 21:42 编辑 [/it]]

我是OVER!!!    我是OVER!!!    我是OVER!!!
2008-10-15 21:41
smltq
Rank: 6Rank: 6
等 级:侠之大者
威 望:8
帖 子:566
专家分:400
注 册:2008-1-21
收藏
得分:0 
[bo][un]cblovehh[/un] 在 2008-10-15 21:41 的发言:[/bo]

是的呀,就是这个关系啊fwrite只能写2进制啊+

而且他下面又加了个fprintf也是写文件,又给叠加掉了


fwrite只能写2进制文件?,然道它不能写文本文件?

简单的生活
2008-10-15 22:00
cblovehh
Rank: 1
等 级:新手上路
帖 子:39
专家分:0
注 册:2008-10-14
收藏
得分:0 
不能撒,他就是写二进制的呀
用fprintf写格式文件,是什么样的就什么样的写进去

我是OVER!!!    我是OVER!!!    我是OVER!!!
2008-10-15 22:52
forever74
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:CC
等 级:版主
威 望:58
帖 子:1692
专家分:4282
注 册:2007-12-27
收藏
得分:0 
二进制形式写的内容当然是乱码
就和使用记事本打开.exe一样道理
2008-10-16 01:47
快速回复:fwrite和fread出现乱码
数据加载中...
 
   



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

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