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仍继续读;读写的内容当字节看待
弄混了