繁体   English   中英

C中的fread和fwrite参数

[英]fread and fwrite parameters in C

我正在尝试将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是我的文件数据将被保存的向量。
sizeof(double)是数据的长度(我声明了所有的double
arq是指向文件的指针。

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

(我正在编码移动平均线,媒体长度由用户通知,矢量大小是我输入文件的长度)。

对于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是读取的size函数的倍数。 因此,第二个参数应该是矢量的大小,第三个参数应该是您想要从文件指针读取的矢量数。 还有关于matlab fread调用的混乱。 matlab fread调用中的第二个参数是int16,它是2个字节,但在c fread调用中,你已经传递了第二个参数sizeof(double),即8个字节。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM