fread函数的用法

fread函数怎么从文件中读出一个整数?看下面的一个例子,为什么会有错误?#include<stdio.h>intmain(){FILE*fp;inta;fp=fopen... 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;
}
展开
 我来答
橘子闪烁
推荐于2019-09-12 · TA获得超过7.5万个赞
知道答主
回答量:291
采纳率:100%
帮助的人:16.7万
展开全部

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循环读取一个文件时,如果是在读取函数之前进行判断,则如果文件最后一行是空白行,可能会造成内存错误。

参考资料:

fread--百度百科

匿名用户
2010-05-13
展开全部
在文本文件(这个txt文件)中,45是以字符串形式保存的,也就是说,实际上保存的是45这两个字符的ASCII值,也就是0x34和0x35,也就是十进制数字52和53,而fread()又是一个二进制读取函数,所以用它读取的数值就是这两个数值。

要想读取出45这个数字,应该用fscanf()函数。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
10号upup
推荐于2017-09-23 · TA获得超过269个赞
知道小有建树答主
回答量:128
采纳率:0%
帮助的人:0
展开全部
#include <stdio.h>

int main()
{
FILE * fp;
int a=45;
int b;

fp=fopen("1.txt","wb+");

fwrite(&a,sizeof(int),1,fp);///将a值写到文件中.这句起作用,移动了文件指针。
fseek(fp,0,0);//将文件指针移回首部
fread(&b,sizeof(int),1,fp);

printf("b is %d\n\n",b);

fclose(fp);

return 0;
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
湛蓝水晶
2010-05-13 · 知道合伙人数码行家
湛蓝水晶
知道合伙人数码行家
采纳数:1388 获赞数:9352
毕业北京科技大学数学与应用数学专业,学士学位,IT行业6年从业经验。现任公司项目经理。

向TA提问 私信TA
展开全部
fread读的是二进制的数据,你在文件里如果直接键盘敲的45,是不能正确读出来的。
试试先把一个int型数据fwrite进文件里,再用fread读出来.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lcm119
2010-05-13 · TA获得超过638个赞
知道小有建树答主
回答量:509
采纳率:0%
帮助的人:298万
展开全部
你读的是4个ASC码,当然不对,先读到字符串中,再变int
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式