c - 如何用 libsndfile 库中的函数替换 fscanf?

标签 c

我使用 libsndfile 库打开了 wav 文件,想要读取该文件并获取 FFT 中的 N 个点,并获取时域样本并计算 FFT。

有什么想法可以用 libsndfile 库中的函数替换 fscanf 吗? 这是代码行:

for(i=0; i < N; i++) fscanf(fs, "%lg%lg", &x[i][0], &x[i][1]);

所以,问题是我不知道如何使用 wav。没有 libsndfile 以及如何使用 libsndfile 实现一些东西。

谢谢, a.

最佳答案

你说你想阅读 N 个样本,然后你就这么做了:

for(i=0; i < N; i++) fscanf(fs, "%lg%lg", &x[i][0], &x[i][1]);

所以你正在阅读 2 * N 个样本,但我不确定为什么。

如果您获取 libsndfile 源代码 tarball,则示例/目录中有示例程序。基本上你会这样做:

SNDFILE * sf ;
SF_INFO info ;
double  array [N] ;

memset (&info, 0, sizeof (info));
if ((sf = sf_open (filename, SFM_READ, &info)) == NULL)
   handle_error () ;

sf_read_double (sf, array, N) ;
sf_close (sf) ;

此代码假设您的文件是单声道(只有一个 channel )。

关于c - 如何用 libsndfile 库中的函数替换 fscanf?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5649960/

相关文章:

c - 如何从结构指针数组中取消引用

c++ - C++ 库的 C 包装器,iostream 和 gcc 的问题

c - 是什么让 GDB 拒绝破解?

c - print concat换行符("\n"的值)结果在C中显示为<?>符号

c - 需要有关代码片段的建议

c - 为什么open在这个循环中返回null? C

c - 将 strcmp 与二维数组一起使用

c - 为什么AssignProcessToJobObject 在 XP 上失败并出现错误“访问被拒绝”?

c - 如何访问 Rust 中的 C 常量?

c - 通过 C 代码实现的 RTSP 管道不起作用?