fread函数怎么从文件中读出一个整数?
看下面的一个例子,为什么会有错误?
#include <stdio.h>
int main()
{
FILE * fp;
int a;
fp=fopen("1.txt","r");
fread(&a,sizeof(int),1,fp);
printf("a is %d\n\n",a);
return 0;
}
附加的文件1.txt中只有一个整数,如45,但运行后得到的结果却不能显示这个数,why?
按二楼提供的代码改了一下,还是不能正确显示出b is 45,why?
还有一点,我现在是想先手工往文件中输入一些数据,然后在程序中将其读出,用于测试程序的正确性,避免每次都从键盘输入。fread函数不能做到这一点吗?
#include <stdio.h>
int main()
{
FILE * fp;
int a=45;
int b;
fp=fopen("1.txt","wb+");
fwrite(&a,sizeof(int),1,fp);///将a值写到文件中
fread(&b,sizeof(int),1,fp);
printf("b is %d\n\n",b);
fclose(fp);
return 0;
}
fread函数可从文件中读取二进制数据
语法:
A = fread(fid, count)
A = fread(fid, count, precision)
其中fid为指针所指文件中的当前位置,count指读取的数据个数, precision表示以什么格式的数据类型读取数据。
例子:
fid = fopen('alphabet.txt', 'r');
c = fread(fid, 5)'
c =
65 66 67 68 69
fclose(fid);
程序说明:alphabet文件中按顺序存储着26个英文字母,读取文件之前要先打开文件,由于未指定读取数据的类型,所以程序指定默认类型为无符号字符型即uchar,65、66、67、68、69代表A、B、C、D、E,文件用完还要记得关闭文件,以便释放指针。
用 法
int feof(FILE *stream);
参数
流 :FILE结构的指针
注意:feof判断文件结束是通过读取函数fread/fscanf等返回错误来识别的,故而判断文件是否结束应该是在读取函数之后进行判断。比如,在while循环读取一个文件时,如果是在读取函数之前进行判断,则如果文件最后一行是空白行,可能会造成内存错误。