下面是我用C编的读文件程序
可读入一个含0到16的整数的文件后,输出却不对,输出是
828987408之类的数
单步调试后发现FILE *f1类型中的*f1.ptr和*f1.tempname出现错误:
CXX0030:Error:expression cannot be evaluated
请教各位哥哥姐姐们这是为什么
本人初学···#include <stdlib.h>
#include <conio.h>
#include <string.h>void main()
{
char name[100];
FILE *f1;
int a[16],i; printf("请输入文件名:\n");
scanf("%s",name); f1=fopen(name,"rt+"); if(f1==NULL)
return; for(i=0;i<16;i++)
{
fread(&a[i],4,1,f1);
printf("%d\n",a[i]);
} fclose(f1);
}

解决方案 »

  1.   

    fread(&a[i],4,1,f1);//一次读入4个字节?但是你只给一个字节的空间?
    printf("%d\n",a[i]);
      

  2.   

    int fread(void *buf, int size, int count, FILE *stream); 
     fread()函数是从文件中读count个字段, 每个字段长度为size个字节, 并把 
    它们存放到buf指针所指的缓冲器中。所以你的字段长度为4,但却用的是&a[i]
      

  3.   

    int不是4个字节吗?
    &a[i]是a[i]的地址啊
    那么正确的应该是怎样表示呢?
      

  4.   

    是文本文件吧?应该这样读:for(i=0;i<16;i++)
    {
    fscanf(f1,"%ld" &a[i]);
    printf("%d\n",a[i]);
    }
      

  5.   

    printf("%d\n",(unsigned char)a[i]);
      

  6.   

    for(i=0;i<16;i++)
    {
    fread(&a[i],sizeof(int),1,f1);
    printf("%d\n",a[i]);
    }