首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

fread函数引发的变量改变有关问题 求指教

2012-09-15 
fread函数引发的变量改变问题求指教[codeC/C++][/code]int i1char ch[7],c[256][256]FILE*finfinfop

fread函数引发的变量改变问题 求指教
[code=C/C++][/code]

  int i=1;
  char ch[7],c[256][256];
  FILE *fin;
  fin=fopen("HC.code","rb");
  HC = (HuffmanCode)malloc((n+1)*sizeof(char*));
  while(!feof(fin))
  {
  fread(&Data[i],sizeof(char),1,fin);//1
  fread(ch,sizeof(char),8,fin);//2 
  }
为什么执行完语句2后,i=32?多次循环结果都如此,这是怎么回事呢,求大神指教
还有一个问题,用fprintf写入的内容可以用fread来读吗? 如果不行是为什么呢? 感觉十分混乱..

[解决办法]
1、fread对i不会产生影响,只是会改变Data[i]的指;
2、用fprintf写入的内容可以用fread来读。
[解决办法]
fread(&Data[i],sizeof(char),1,fin);//1 你每次往Data[i]的初始地址写一个char型大小数据,后面写得数据会覆盖前面的。不知你是要这样做还是怎么的,不然就应该移动指针。
fread(ch,sizeof(char),8,fin);//2 ch的大小事7个char型,你往里面写8个char,会不出错?
[解决办法]
推荐使用WinHex软件查看文件或内存中的原始字节内容。

不要把
fopen("...","...");fscanf,fprintf,fclose //读时把\r\n替换成\n,写时把\n替换成\r\n;读到\x1a就设置EOF;读写的内容当字符看待

fopen("...","...b");fread,fwrite,fclose //不作以上替换,遇到\x1a仍继续读;读写的内容当字节看待
弄混了

热点排行