Bonjour, je vous écris car je rencontre actuellement d’important problème concernant mon projet de langage C
Mon problème porte sur la lecture des tags ID3 dans un fichier mp3.
Le TAG d’un fichier mp3 ID3 est composé de la sorte : (ceci est un exmple…)

3 caractères : ID3
1 caractères : Version
6 caractères : "Divers"
4 caractères : TIT2
2 caractères : Flags
2 Caractères : Taille du titre
3 caractères : divers…..Etc

Mon problème ce situe lors de la lecture de la taille du titre, ou taille de l’album, ou taille du nom de l’artiste… En effet je n’arrive pas à convertir la taille récupérer en entier.

Je vous fait parvenir ci-dessous la procédure d’extraction du tag. Je vous précise que celle si n’est pas pour le moment complète. Mais rencontrant le problème ou je n’arrivais pas à lire la taille du titre, je souhaiterais que vous m’expliquiez s’il vous plaît ou ce trouve le problème. Merci d'avance pour votre aide.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
 
 
// Extraction TAG des MP3 - NE FONCTIONNE PAS
void Extraction(char *nomfichier)
{
 
  FILE *ptr_fichier;
 
  char *ptr_poubelle;
  char LONGUEUR[0];
  char ID[2];
  char TITRE[3];
  int  taille;
 
  char titrecomplet[15];
  char artistecomplet[15];
  char albumcomplet[15];
 
  // ouverture du fichier en lecture  
  ptr_fichier=fopen(nomfichier,"r");
 
  if (ptr_fichier == NULL)
  {
    perror("Erreur d’ouverture du fichier") ;
    exit(0) ;
  }     
  // le fichier est trouvé
  else
  {
 
   // lecture des 3 premiers caractères du fichiers mp3 : ID3
   fread(ID,sizeof(char),3,ptr_fichier);
   strcat(ID,"\0");
   printf("ID : %s \n",ID);
 
   // on passe la version, le flag et la taille du tag pour le moment
   fread(ptr_poubelle,sizeof(char),7,ptr_fichier);
 
   // Lecture de 4 caractères du fichier mp3 : TIT2
   fread(TITRE,sizeof(char),4,ptr_fichier);
   strcat(TITRE,"\0");
   printf("TITRE : %s \n",TITRE);
 
   // on passe le flag
   fread(ptr_poubelle,sizeof(char),3,ptr_fichier);
 
//PROBLEME
   // lecture de la taille du titre sur 2 caractères en hexa. : ne fonctionne pas correctement
   fread(LONGUEUR,sizeof(char),1,ptr_fichier);
   strcat(LONGUEUR,"\0");
   printf("Taille : %s \n",LONGUEUR);
   // convertion de la taille du titre en hexa en decimal : ne fonctionne pas
   taille = strtoul(LONGUEUR, NULL, 16);
   // Affichage de la taille du titre
   printf("Taille du titre : %d \n",taille);
// FIN DU PROBLEME   
 
   /*
   // On passe le flag
   fread(ptr_poubelle,sizeof(char),3,ptr_fichier);
   
   // on lit le titre sur la taille trouvé précédement
   fread(titrecomplet,sizeof(char),(taille-1),ptr_fichier);
   // affichage du titre complet
   printf("Titre du morceau : %s \n",titrecomplet); 
   
   */
 
  }         
   fclose(nomfichier);  
}
Merci pour vos réponses et vos aides.