首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C中的fread和fread参数

C中的fread和fread参数
EN

Stack Overflow用户
提问于 2016-08-22 18:24:11
回答 1查看 961关注 0票数 0

我试图将matlab程序改编成C,我的问题是在fwritefread函数中。在matlab上我有:

代码语言:javascript
复制
fid = fopen ('sweep_100_3400.pcm','rb');
s = fread (fid, 'int16');

我怀疑,在C中,freadfwrite函数中还有另外两个参数。

代码语言:javascript
复制
fread(void*, size_t, size_t, FILE*);
fwrite(const void*, size_t, size_t, FILE*);

在我的C代码中,我有:

代码语言:javascript
复制
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函数,我对参数也有同样的疑问。

代码语言:javascript
复制
arq=fopen("C:\\Users\\iago_\\Desktop\\MediaMovel\\saida_medial_movel_c.pcm", "wb");
fwrite(saida, sizeof(double), itera, arq);
fclose(arq); 
EN

回答 1

Stack Overflow用户

发布于 2016-08-22 19:17:29

fread()参数

代码语言:javascript
复制
size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);

其中,nmemb是读的大小函数的倍数。因此,第二个参数应该是向量的大小,第三个参数应该是要从文件指针读取的向量数。另外,关于matlab调用也有一些混淆。matlab调用中的第二个param是int16,它是2个字节,但是在sizeof调用中,您已经通过了第二个param作为(Double)的大小(8字节)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39086285

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档