下面是我用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);
}
可读入一个含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);
}
printf("%d\n",a[i]);
fread()函数是从文件中读count个字段, 每个字段长度为size个字节, 并把
它们存放到buf指针所指的缓冲器中。所以你的字段长度为4,但却用的是&a[i]
&a[i]是a[i]的地址啊
那么正确的应该是怎样表示呢?
{
fscanf(f1,"%ld" &a[i]);
printf("%d\n",a[i]);
}
{
fread(&a[i],sizeof(int),1,f1);
printf("%d\n",a[i]);
}