gpt4 book ai didi

c - 读取 AU 文件的 header - C

转载 作者:行者123 更新时间:2023-11-30 15:21:48 26 4
gpt4 key购买 nike

我正在尝试读取 C 语言中的 .au 文件的 header ,并且我将所有值存储在 struct 中,但在转换时遇到问题它们为 Little Endian 格式。

我偶然发现了一种方法,ntohl,它应该获取字节并将它们转换为主机格式,但在编译程序时我不断收到错误。

对“ntohl”的 undefined reference

#include <stdio.h>

struct header
{
char magic[5];
int offset;
int size;
int encoding;
int rate;
int channels;
};

int main()
{
FILE *fin, *fout;
struct header au;
char path[10];

printf("Enter name of file to be processed: ");
scanf("%s", path);

fin = fopen(path, "r");
fout = fopen("out.au","w");

fscanf(fin, "%s %d %d %d %d %d", &au.magic, &au.offset, &au.size, &au.encoding, &au.rate, &au.channels);
printf("%s\n%d\n%d\n%d\n%d\n%d\n", au.magic, ntohl(au.offset), ntohl(au.size), ntohl(au.encoding), ntohl(au.rate), ntohl(au.channels));
}

我正确读取标题值吗?

最佳答案

关于Linux OS ntohlarpa/inet.h(或 netinet/in.h)头文件中声明。上Windows它是Winsock2.h

至于读取标题的正确性,是不正确的。您正在执行 fscanf(fin, "%s %d %d %d %d %d... ,这是尝试读取文本表示中的数字,用空格分隔,这完全不是AU file 是如何表示的。此文件类型是二进制文件,应该使用 fread 作为二进制文件进行读取。

关于c - 读取 AU 文件的 header - C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29479220/

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