⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 readid3.c

📁 e1c0df5d-c8bc-48a5-bc02-a2b7c51c0dbf是做mp3的源代码
💻 C
字号:
#include <stdio.h>#include <string.h>#define TITLE 1#define INTERPRET 2#define GENRE 3FILE * infile;int i, size;char b;char buf[512];char string[60];char * bufp;int offset;int parse_tag(int * offset);int main(){  infile = fopen("test.mp3", "r");  bufp = buf;  for (i = 0; i < 512; i++)  {    buf[i] = getc(infile);  }  fclose(infile);  if (buf[0]=='I' && buf[1]=='D' && buf[2]=='3') printf("ID3-Tag gefunden!\n");  size = buf[6] << 21 | buf[7] << 14 | buf[8] << 7 | buf[9];  printf("Gr鲞e: %x\n", size);  offset = 10;  while (offset < 512)  {    size = parse_tag(&offset);    switch (size)    {      case 0:        printf ("Genre: %s\n", string);	break;      case 1:        printf("Track: %s\n", string);	break;      case 2:        printf("Album: %s\n", string);	break;      case 3:        printf("Interpret: %s\n", string);	break;      case 4:        printf("Titel: %s\n", string);	break;    }  }//  for (i=0; i<3; i++) printf("%2x", buf[i]);}int parse_tag(int *offset){  int tsize, encoding, numid;  char fid[5];  const char valid_tags[] = "TCONTRCKTALBTPE1TIT2";  numid = -1;  fid[4]='\0';  strncpy(fid, &buf[*offset],4);		// get frame identifier as string//  numid =  *offset +=  4;  tsize = ((unsigned char) buf[*offset]) << 21 | ((unsigned char) buf[*offset+1]) << 14 | ((unsigned char) buf[*offset+2]) << 7 | (unsigned char) buf[*offset+3];  *offset += 6;		// jump over flags...  char * strpos = strstr(valid_tags,fid);  if (strpos)  {    numid = ((int) strpos - (int) &valid_tags) / 4;    encoding = buf[*offset];    if (encoding == 0) *offset += 1; else *offset += 3;    if (encoding == 0) tsize -= 1; else tsize -= 3;    for (i=0; i<tsize; i++)    {      string[i/(encoding+1)]=buf[*offset+i];      if (encoding != 0) i++;    }    *offset += i;    string[i/(encoding+1)]='\0';  }  else  { *offset += tsize; }  return numid;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -