freadC语言中fread的一些疑问

fread  时间:2021-06-07  阅读:()

关于fread和fwrite的用法问题

这个肯定不可以的, 首先你的a数组的大小不是book而是应该*n; 然后这是结构体数组不是字符串数组,要一个个输。

还有我自己的疑问你的fread没写错么?不是fread(&a[k], sizeof(BOOK), 1, fp)么?传的不 是结构体的地址么?

fread的用法

fread(&a, 4, 1, fp); 此处不正确. 还是使用fscanf比较方便. 你要是使用fread的话,你首先得读取字符串,然后再把字符串转换成整数.因为你在文件中是以字符串形式存放的,而不是数字 可以

fread函数第三个参数的作用

fread(line, sizeof(char), 27, infile) fread(ori_file, sizeof(char), 35, file) 这里的27和35个元素个数的元素都是 char 就是说,你最多可以读取27和35个char字符到line和ori_file变量中 如果要读取100行,每行50个字符 可以用一个for循环,循环100次,每一次读50个字符: fread(str, sizeof(char), 50, file);

C语言中fread的一些疑问

L_o_o_n_i_e 回答得不怎么准确! 我帮你解释下: 首先介绍fread函数 功 能: 从一个流中读数据 函数原型: int fread(void *ptr, int size, int nitems, FILE *stream); 参 数:用于接收数据的地址(指针)(ptr) 单个元素的大小(size) :单位是字节而不是位,例如读取一个整数值就是4 元素个数(nitems) 提供数据的文件指针(stream) 返回值:成功读取的元素个数 由上面介绍知道fread函数的第一个参数是个指针变量,可以指向任意类型实参! 严归正传,对于你这里的问题, 你代码中的s是个结构体数组变量,跟普通数组变量一样,数组名本身就是个指针常量,所以在buffer位置写成s是没有问题的。

那么为什么你这里读会变乱码呢? 虽然你帖的代码并没有全,但从你说的读取是乱码, 我大概猜到在你用fwrite函数把数据写进文件的时候是以每次一个结构体大小(也就是仅仅是数组s的一个元素而已,也就对应一个下标而已)和一个数据块的方式写进文件里的。

所以当你用fread函数读取的时候,假设你在buffer位置写成s,本身语法是没有问题的,但是就相当于你把数组s的仅一个元素的数据大小当成所有s的数据存到s中,也就是没有对应起来,所以显示会是乱码。

所以你可以有两种方式实现: 方式一: 在写的时候按一次以s的一个元素的数据大小作为一个数据块依次写进文件,然后读取时候也以同样方式读出来。

代码可以这么写: 假设s的大小为:SIZE_S for(count = 0; count < SIZE_S; count++) fwrite(&s[count], sizeof(struct student), 1, fp); 然后读取时: for(count = 0; count < SIZE_S; count++) fread(&s[count], sizeof(struct student), 1, fp); 方式二: 以整个数组s的数据大小作为一个数据块一次写进文件,然后读取时也同样全部读出来,最后可以以循环的方式打印出来。

代码实现如下: 假设s的大小为:SIZE_S fwrite(s, SIZE_S * sizeof(struct student), 1, fp); 然后读取时: fread(s, SIZE_S * sizeof(struct student), 1, fp); 最后打印: for(count = 0; count < SIZE_S; count++) fread(&s[count], sizeof(struct student), 1, fp); 明白了记得给哥哥顶下~~~ ^_^

2022年腾讯云新春采购季代金券提前领 领取满减优惠券和域名优惠

2022年春节假期陆续结束,根据惯例在春节之后各大云服务商会继续开始一年的促销活动。今年二月中旬会开启新春采购季的活动,我们已经看到腾讯云商家在春节期间已经有预告活动。当时已经看到有抢先优惠促销活动,目前我们企业和个人可以领取腾讯云代金券满减活动,以及企业用户可以领取域名优惠低至.COM域名1元。 直达链接 - 腾讯云新春采购活动抢先看活动时间:2022年1月20日至2022年2月15日我们可以在...

BuyVM商家4个机房的官方测试IP地址和测速文件

BuyVM 商家算是有一些年头,从早年提供低价便宜VPS主机深受广大网友抢购且也遭到吐槽的是因为审核账户太过于严格。毕竟我们国内的个人注册账户喜欢账户资料乱写,毕竟我们看英文信息有些还是比较难以识别的,于是就注册信息的时候随便打一些字符,这些是不能通过的。前几天,我们可以看到BUYVM商家有新增加迈阿密机房,而且商家有提供大硬盘且不限制流量的VPS主机,深受有一些网友的喜欢。目前,BUYVM商家有...

CYUN专注海外精品服务器资源 国庆钜惠 最低5折起 限量促销

国庆钜惠 最低5折起 限量促销CYUN专注海外精品服务器资源,主营香港CN2 GIA、美国CERA、美国高防服务器资源,实体公司,ISP/IDC资质齐全,客服配备齐全。本次针对国庆推出非常给力的促销活动,旗下所有平台同享,新老客户同享,限时限量,售完截止。活动截止时间:2021年10月9日官网地址:www.cyun.net参与机型:香港CN2 GIA云服务器、香港双程CN2云服...

fread为你推荐
excel计算公式求excel计算公式大全数据挖掘项目怎样利用大数据挖掘农业项目发展前景腾讯技术腾讯QQ是谁研发的?在那一年上市的?什么是生态系统生态系统的我主要特征是什么?腾讯贴吧QQ贴吧图标灭了后该怎样再点亮?腾讯贴吧QQ应该有贴吧的吧?那怎样进QQ贴吧?在(=@__@=)哪里?翻译图片识别有那种根据图片识别上面的英文进行翻译的软件么?病毒分析网站谁给个病毒网站分析的工具?哪找?谢谢了,大神帮忙啊视频服务器软件有没有集体视频的网站或者软件??视频比特率是什么求解:视频格式搞成720p(1280 * 720),MP4,码率是10MB什么意思,详细点~
手机网站空间 万网域名 已备案域名 私服服务器 韩国电信 ixwebhosting 怎样建立邮箱 赞助 服务器托管什么意思 100mbps 彩虹云 web服务器是什么 我的世界服务器ip 韩国代理ip 注册阿里云邮箱 徐州电信 1美元 汤博乐 电信测速器在线测网速 blaze 更多