作者CannyRowFour (知道还问)
看板C_and_CPP
标题关於fwrite之函式使用疑问
时间Wed Dec 13 12:25:44 2017
开发平台(Platform): (Ex: Win10, Linux, ...)
Windows Ubuntu 皆有使用
编译器(Ex: GCC, clang, VC++...)+目标环境(跟开发平台不同的话需列出)
Windows 使用 Visual Studio C++
Ubuntu 使用 eclipse
额外使用到的函数库(Library Used): (Ex: OpenGL, ...)
无
问题(Question):
关於fwrite函式,小弟也到MSDN找了此函式的定义如下:
size_t fwrite(const void *buffer, size_t size, size_t count, FILE *stream)
其中 size定义为每个项目的Byte大小,而count则是多少个写入项目。
欲将一组名称为output,个数为100长度的float向量存为一.dat之二进位档,
依照定义应该为:
fwrite(output, sizeof(float), 100, 开启档案之指标)
但由学长先前的范例发现,如果将2,3的参数位置对调,仍然能够顺利将资料存起来,如
下:
fwrite(output, 100, sizeof(float), 开启档案之指标)
并且储存後的档案利用Matlab验证是正确的
想请教各位前辈,是不是小弟搞错什麽,还是有什麽观念不清楚的地方,想请各位指正。
手机排版,可能不易阅读,还请见谅
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 140.117.160.91
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1513139146.A.494.html
1F:→ james732: 因为它是把buffer的size*count写进档案里吧?12/13 12:44
2F:→ CannyRowFour: james大是指写入档案会有不一样的写法吗? 12/13 12:49
3F:→ Lipraxde: 你count不要用4的倍数看看啊12/13 13:13
4F:推 yvb: 检查 fwrite 的回传值看看.12/13 13:32
※ 编辑: CannyRowFour (42.77.12.255), 12/13/2017 14:04:01
5F:→ CannyRowFour: 谢谢L大与y大建议,等等回去试试看 12/13 14:08
6F:推 steve1012: 可以正确写是因为implementation 通常会用size*count 12/13 14:59
7F:→ steve1012: 但是回传值不同 12/13 14:59
8F:→ steve1012: 试了一下 你直接google "fwrite size count" 第一个搜 12/13 15:00
9F:→ steve1012: 寻结果就有讲了 还有放FreeBSD 的implementation. 以後 12/13 15:00
10F:→ steve1012: 先查一下可能更快拿到答案喔 12/13 15:00
11F:→ CannyRowFour: 谢谢steve大的帮忙,非常感谢你的解说 12/13 15:14
12F:推 stupid0319: 那是写在硬碟上没什麽差别,如果某个装置一次只能写8个 12/13 16:15
13F:→ stupid0319: 那不就爆炸了 12/13 16:15
14F:→ CannyRowFour: 原来也有这样的概念,谢谢stupid大的解说 12/13 17:42