gpt4 book ai didi

c - 如何从文件中逐字节读取

转载 作者:太空狗 更新时间:2023-10-29 17:15:35 26 4
gpt4 key购买 nike

我想从 song.wav 类型的二进制文件中读取前 4 个字节。在 .wav 文件中,前 4 个字节必须是 52-46-49-49,我必须读取它们以稍后检查它们是否为真。

问题是我在 fread 行有一个编译错误,上面写着 invalid conversion from "unsigned char"to "void" and initialzing argument 1 of 'size_t fread(void* ,size_t,size_t,FILE*) 我不知道这是什么意思。

我在之前的主题中看到,如果我想逐字节读取,这是 fread 必须完成的方式。如果有人知道我如何逐字节读取并将它们存储在一个很棒的数组中。谢谢你。

void checksong(char *argv[]){
FILE *myfile;
int i;
unsigned char k[4];
myfile=fopen(argv[2],"r");
i=0;
for(i=0; i<4; i++){
fread(k[i],1,1,myfile);
}
for(i=0; i<4; i++){
printf("%c\n", k[i]);
}
return ;
}

最佳答案

这是一个错误:

Invalid conversion from unsigned charto void* initializing argument 1 of

size_t fread(void*,size_t,size_t,FILE*)

这意味着k[i] 是一个unsigned char,而不是一个指针。您应该使用 &k[i]k+i

但是,您实际上并不需要逐字节读取。您可以读取 4 个字节,不涉及循环:

fread(k, 4, 1, myfile);

打印数字:

for (i=0; i<4; i++)
printf("%d\n", k[i]);

关于c - 如何从文件中逐字节读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17362046/

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