gpt4 book ai didi

c - C 中的 fread 和 fwrite 参数

转载 作者:太空宇宙 更新时间:2023-11-04 04:28:18 24 4
gpt4 key购买 nike

我正在尝试将 matlab 程序改编为 C,我的问题出在 fwritefread 函数中。在 matlab 上我有:

fid = fopen ('sweep_100_3400.pcm','rb');
s = fread (fid, 'int16');

我的疑问是,在 C 中,freadfwrite 函数中还有两个参数。

fread(void*, size_t, size_t, FILE*);
fwrite(const void*, size_t, size_t, FILE*);

在我的 C 代码中我有:

arq = fopen("C:\\Users\\iago_\\Desktop\\MediaMovel\\sweep_100_3400.pcm", "rb");
fread(x, sizeof(double), itera, arq);
fclose(arq);

x 是保存我的文件数据的 vector 。
sizeof(double)是数据的长度(我都声明了double)
arq 是指向文件的指针。

第三个参数是一个size_t,为了适配我的matlab程序,这个参数应该使用媒体长度还是 vector 大小?

(我正在编码一个移动平均值,媒体长度由用户告知, vector 大小是我的输入文件的长度)。

对于fwrite函数的参数我也有同样的疑问

arq=fopen("C:\\Users\\iago_\\Desktop\\MediaMovel\\saida_medial_movel_c.pcm", "wb");
fwrite(saida, sizeof(double), itera, arq);
fclose(arq);

最佳答案

fread() 参数是

size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);

其中 nmemb 是 read 大小函数的倍数。所以第二个参数应该是你的 vector 的大小,第三个应该是你想从文件指针中读取的 vector 的数量。也有关于 matlab fread 调用的困惑。 matlab fread 调用中的第二个参数是 int16,它是 2 个字节,但是在 c fread 调用中,您将第二个参数作为 sizeof(double) 传递,它是 8 个字节。

关于c - C 中的 fread 和 fwrite 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39086285/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com