Вы должны прочитать только один раз заголовок.т. е. если у вас есть
struct id3v2hdr {
char TAG[3];
unsigned char version;
unsigned char subversion;
...
}
Ваш код будет:
fseek(file,0,SEEK_SET);
fread(&tag.TAG, 1, sizeof(tag),file); // tag is structure with elements of header
if(strncmp(tag.TAG,"ID3", 3) == 0)
{
printf("ID3v2.%hhd.%hhd", tag.version, tag.subversion);
}
Обратите внимание, что version
и subversion
являются целыми байтами, а не печатными символами, поэтому вам следует использовать%hhu
(%hhd
, если они подписаны) в качестве его спецификации формата.
Кроме того, указатель на первый элемент структуры и указатель на структуру сравниваются, поэтому изменив свой fread
строка:
fread(&tag, 1, sizeof(tag),file); // tag is structure with elements of header
не нужна (хотя это гораздо яснее продемонстрирует намерение).