#include <stdio.h>
int main(void)
{
FILE *fp;
int i;
unsigned char in[100];
unsigned char out[100];
fp=fopen("a.txt","w+");
if(fp==NULL)
return(1);
for(i=0;i<32;i++)
{
out[i]=i;
fwrite(&out[i],1,1,fp);
}

fclose(fp);

fp=fopen("a.txt","ab+");
if(fp==NULL)
return(1);
for(i=0;i<32;i++)
{
fread(&in[i],1,1,fp);
printf("in[%d]=%x\r\n",i,(unsigned)in[i]);
}
fclose(fp);

return 0;
}结果是in[i]都是0,为什么???

解决方案 »

  1.   

    写入文件的长度不对.不应该是1。
    应该是sizof(unsigned char)
      

  2.   

    建议使用fprintf()与fscanf()来进行读写
      

  3.   


    不会呀!我刚才把你写的程序试了一下,没有问题呀!我一点都没有改动,
    in[i]的值是合适的呀!
    你再试试吧!
    对了,你建一个console 应用试试!
      

  4.   

    1.你应一次读写所有数据。
    2.写时参数"wb",读时参数"rb".
      

  5.   

    我都实验过了!!!
    不过,我是在linux在用gcc 编译的!
      

  6.   

    不对阿,我把你的程序在VC6.0+ Win 2000 PROfessional 下运行,
    结果不是你所说的都是 0阿,
    而是从0-1e
      

  7.   

    我在window上试了,问题不如你所说的全是0
    你试试打开文件时用wb+的模式
      

  8.   

    在windows下我的程序也运行正常!