我是一般的新程序员,我现在已经开始使用 c。我正在尝试解码 IDEv3 mp3 标签,但遇到了各种问题。当我使用 fread() 和 strncpy() 命令时,我注意到两者都需要将 \n 字符作为结束参考点。(也许我错了,这只是一个观察)
当我打印输出时,它们会产生一个不可读的字符。作为解决该问题的解决方案,我使用 fread() 4 个字节而不是 3 个,以便生成 (8)\n 个字符(整个字节),第二步我使用 strncpy() 和 3 个字节分配然后我用于打印的内存。理论上,当我使用 fread() 时,我不应该遇到这个问题。
代码示例:
#include <stdio.h>
#include <stdlib.h>
typedef struct{
unsigned char header_id[3]; /* Unsigned character 3 Bytes (24 bits) */
}mp3_Header;
int main (int argc, char *argv[]) {
mp3_Header first;
unsigned char memory[4];
FILE *file = fopen( name.mp3 , "rb" );
if ( (size_t) fread( (void *) memory , (size_t) 4 , (size_t) 1 , (FILE *) file) !=1 ) {
printf("Could not read the file\n");
exit (0);
} /* End of if condition */
strncpy( (char *) first.header_id , (char *) memory , (size_t) 3);
printf ("This is the header_ID: %s\n", first.header_id);
fclose(file);
} /* End of main */
return 0;