相关疑难解决方法(0)

fread/fwrite以大小和计数为参数的理由是什么?

我们在这里讨论了为什么fread和fwrite为每个成员计算一个大小并计算并返回读/写成员的数量,而不仅仅是采用缓冲区和大小.我们可以想到的唯一用途是,如果你想读/写一个结构数组,这些结构不能被平台对齐整除,因此已被填充,但这并不能保证这一选择在设计中.

来自FREAD(3):

函数fread()从流指向的流中读取数据的nmemb元素,每个数据字节长,将它们存储在ptr给定的位置.

函数fwrite()将每个大小字节长的数据的nmemb元素写入stream指向的流,从ptr给出的位置获取它们.

fread()和fwrite()返回成功读取或写入的项目数(即不是字符数).如果发生错误或达到文件结尾,则返回值为短项目计数(或零).

c libc

89
推荐指数
4
解决办法
2万
查看次数

fwrite和写入大小的性能

我正在写一个大型数字二维数组到二进制文件(最终大小~75 MB).

我在linux系统上这样做.首先,有没有比fwrite更好的方法或系统调用来尽可能快地写入文件?

其次,如果我应该使用fwrite,那么我应该把整个文件写成1个连续的行吗?

fwrite( buf, sizeof(float), 6700*6700, fp );
Run Code Online (Sandbox Code Playgroud)

或者把它写成一系列的块

fwrite( buf, sizeof(float), 8192, fp );
fwrite( *(buf+8192), sizeof(float), 8192, fp );
....
Run Code Online (Sandbox Code Playgroud)

如果我应该写下这篇文章,每个大块应该有多大?

c performance file-io

7
推荐指数
2
解决办法
8084
查看次数

fread/fwrite大小和计数

我怀疑用于fread/fwrite的参数大小和计数的顺序.如果我想从文件fp中读取8kb的数据,以下哪项更有效?

fread(data,1,8192,fp)
fread(data,8192,1,fp)
Run Code Online (Sandbox Code Playgroud)

还有我应该担心的endiannes问题吗?

c c++ file endianness

5
推荐指数
1
解决办法
1926
查看次数

标签 统计

c ×3

c++ ×1

endianness ×1

file ×1

file-io ×1

libc ×1

performance ×1