fread函数的用法

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;
}

第1个回答  推荐于2017-09-15
C语言中:fread是一个函数。从一个文件流中读数据,最多读取count个元素,每个元素size字节,如果调用成功返回实际读取到的元素个数,如果不成功或读到文件末尾返回 0。
函数原型:size_t fread ( void *buffer, size_t size, size_t count, FILE *stream) ;
参数:
buffer 用于接收数据的内存地址
size 要读的每个数据项的字节数,单位是字节
count 要读数据项的个数,每个数据项size个字节.
stream 输入流的指针
返回值:
返回实际读取的元素个数。如果返回值与count不相同,则可能文件结尾或发生错误。从ferror和feof获取错误信息或检测是否到达文件结尾。
实例:
#include<stdio.h>
#include<string.h>
int main(void)
{
FILE*stream;
char msg[]="this is a test";
char buf[20];
if((stream=fopen("DUMMY.FIL","w+"))==NULL)
{
fprintf(stderr,"Cannot open outputfile.\n");
return 0;
}
fwrite(msg,1,strlen(msg)+1,stream);
fseek(stream,0,SEEK_SET);
fread(buf,strlen(msg)+1,1,stream);
printf("%s\n",buf);
fclose(stream);
return0;
}
相似回答