找回密码
 注册
Simdroid-非首页
查看: 199|回复: 4

[2. C/C++/C#] 文件读入读出数据的问题

[复制链接]
发表于 2006-10-10 21:57:09 | 显示全部楼层 |阅读模式 来自 安徽合肥
程序是这样的
#include<stdio.h>

     main()
     {
          char  *m[1000];           
          FILE  *fp,*fp1;
          fp=fopen("test.dat", "r");    /*打开文字文件只读*/
         fp1=fopen("test1.dat", "w+");
          fread(m,sizeof(char),70,fp);  
          fwrite(m,sizeof(char),70,fp1);
          fclose(fp);  
          fclose(fp1);
      }

文件夹下先建一个test.dat,内容为
Your score of TOEFL is:617
That's good news

运行完,生产新文件test1.dat,内容为
Your score of TOEFL is:617
That's good news
烫烫烫烫烫烫烫烫烫烫烫烫

就是会出现乱码。文件有43个字符,把原程序的70改成43,44,45,都没问题,可是数字一大就有乱码,这是为什么?
这是一个数据从一个文件读到另一个文件的问题,我想做的就是不断读入数据进行计算,而前面生成的文件是计算得来得,不可能先知道文件长度得,那我应该怎么办?

还有:既然fread(),fwrite(),可以完成文件得任何数据得读/写操作,那么都用这两个就好了,为什么还要用fgetc(),fputc()这些命令呢?

可能我的问题太简单了,可是你能帮帮我指点一下真的可以给我很大帮助,现在我是迷迷糊糊的。谢谢了~
发表于 2006-10-11 03:39:43 | 显示全部楼层 来自 美国
Simdroid开发平台
读多少,写多少。
      numread = fread( list, sizeof( char ), 25, stream );
      printf( "Number of items read = %d\n", numread );
      printf( "Contents of buffer = %.25s\n", list );
发表于 2007-12-27 10:31:46 | 显示全部楼层 来自 陕西西安
fgets是按行读的 ,到行结束为止,程序中70数目过大,计算机还在读数据,输出为乱码
回复 不支持

使用道具 举报

发表于 2007-12-28 14:12:56 | 显示全部楼层 来自 天津
指针数组m没有初始化,也没有赋值。是不是应该先确定其指向?
回复 不支持

使用道具 举报

发表于 2007-12-29 14:49:12 | 显示全部楼层 来自 浙江宁波
刚才试了一下,你的代码有问题,fwrite(m,sizeof(char),70,fp1);
这样是强制写70个字符,而你读取的根本不够吧,因此出现乱码了

[ 本帖最后由 qiuyoyo 于 2007-12-29 14:56 编辑 ]
回复 不支持

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Simapps系列直播

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-11-1 15:35 , Processed in 0.031992 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表