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); 明白了记得给哥哥顶下~~~ ^_^

ZJI:520元/月香港服务器-2*E5-2630L/32GB/480G SSD/30M带宽/2IP

ZJI发布了一款7月份特别促销独立服务器:香港邦联四型,提供65折优惠码,限量30台(每用户限购1台),优惠后每月520元起。ZJI是原来Wordpress圈知名主机商家:维翔主机,成立于2011年,2018年9月启用新域名ZJI,提供中国香港、台湾、日本、美国独立服务器(自营/数据中心直营)租用及VDS、虚拟主机空间、域名注册等业务。下面列出这款服务器的配置信息。香港邦联四型CPU:2*E5-2...

VoLLcloud(月付低至2.8刀)香港vps大带宽,三网直连

VoLLcloud LLC是一家成立于2020年12月互联网服务提供商企业,于2021年1月份投入云计算应用服务,为广大用户群体提供云服务平台,已经多个数据中心部署云计算中心,其中包括亚洲、美国、欧洲等地区,拥有自己的研发和技术服务团队。现七夕将至,VoLLcloud LLC 推出亚洲地区(香港)所有产品7折优惠,该产品为CMI线路,去程三网163,回程三网CMI线路,默认赠送 2G DDoS/C...

VoLLcloud6折限量,香港CMI云服务器三网直连-200M带宽

vollcloud LLC首次推出6折促销,本次促销福利主要感恩与回馈广大用户对于我们的信任与支持,我们将继续稳步前行,为广大用户们提供更好的产品和服务,另外,本次促销码共限制使用30个,个人不限购,用完活动结束,同时所有vps产品支持3日内无条件退款和提供免费试用。需要了解更多产品可前往官网查看!vollcloud优惠码:VoLLcloud终生6折促销码:Y5C0V7R0YW商品名称CPU内存S...

fread为你推荐
mp4格式mp4普通是什么格式的ostringstream#include<sstream.h>是什么作用身份证正反面图片身份证正反面照片。本人手持身份证照片。 银行卡正反面照片。 本人电话号码就能办信用卡真的吗winhttp什么是WinHTTPiso20000认证iso20000认证流程是怎样的水晶易表水晶狼牙套怎么使用 有什么特点chrome系统Chrome操作系统是什么样的系统?视频技术学习短视频需要准备什么?怎么去做呢?视频技术视频监控技术的定义及特点seo优化技术做seo需要懂什么技术?
ip反查域名 手机域名注册 3322动态域名注册 长沙服务器租用 国外php主机 mediafire下载工具 便宜建站 贵州电信宽带测速 debian6 警告本网站 ca4249 dd444 坐公交投2700元 anylink 工信部icp备案号 php空间购买 免费智能解析 如何注册阿里云邮箱 web服务器搭建 学生服务器 更多