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

月神科技:香港CN2/洛杉矶CN2/华中电信高防vps,月付20元起

月神科技怎么样?月神科技是由江西月神科技有限公司运营的一家自营云产品的IDC服务商,提供香港安畅、香港沙田、美国CERA、华中电信等机房资源,月神科技有自己的用户群和拥有创宇认证,并且也有电商企业将业务架设在月神科技的平台上。目前,香港CN2云服务器、洛杉矶CN2云主机、华中电信高防vps,月付20元起。点击进入:月神科技官方网站地址月神科技vps优惠信息:香港安畅CN2-GIA低至20元核心:2...

RAKsmart美国洛杉矶独立服务器 E3-1230 16GB内存 限时促销月$76

RAKsmart 商家我们应该较多的熟悉的,主营独立服务器和站群服务器业务。从去年开始有陆续的新增多个机房,包含韩国、日本、中国香港等。虽然他们家也有VPS主机,但是好像不是特别的重视,价格上特价的时候也是比较便宜的1.99美元月付(年中活动有促销)。不过他们的重点还是独立服务器,毕竟在这个产业中利润率较大。正如上面的Megalayer商家的美国服务器活动,这个同学有需要独立服务器,这里我一并整理...

Spinservers:美国圣何塞服务器,双E5/64GB DDR4/2TB SSD/10Gbps端口月流量10TB,$111/月

spinservers怎么样?spinservers大硬盘服务器。Spinservers刚刚在美国圣何塞机房补货120台独立服务器,CPU都是双E5系列,64-512GB DDR4内存,超大SSD或NVMe存储,数量有限,机器都是预部署好的,下单即可上架,无需人工干预,有需要的朋友抓紧下单哦。Spinservers是Majestic Hosting Solutions,LLC旗下站点,主营美国独立...

fread为你推荐
tde如何区别动作数据与模型的种类。tde tda lat 啊? mmdwinhttp请问winhttp.dl是什么文件??病历单病例单都有哪些内容?视频压缩算法怎样把3个1G多,1个400多MB的视频文件压缩小?但又无损音质和画面清晰度的。vga接口定义VGA接口的15针分别接什么?模式识别算法算法是编程么?考研学模式识别方向,编程多么?鄂n鄂A鄂B鄂C鄂D鄂E鄂F鄂G鄂H鄂J鄂K鄂L鄂M鄂N鄂P鄂Q鄂R鄂S鄂T鄂U分别代表湖北省的哪些城市腾讯技术腾讯QQ是谁研发的?在那一年上市的?activitygroupactivityGroup子activity跳转的问题腾讯贴吧QQ贴吧图标灭了后该怎样再点亮?
虚拟主机软件 合租服务器 域名备案信息查询 怎么申请域名 樊云 美国翻墙 uk2 名片模板psd 淘宝双十一2018 windows2003iso 免费网络电视 元旦促销 谁的qq空间最好看 1g内存 360云服务 cloudlink 万网空间管理 网购分享 英国伦敦 cxz 更多