IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Problème transmission par adresse


Sujet :

C

  1. #1
    Membre confirmé
    Inscrit en
    Avril 2004
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 58
    Par défaut Problème transmission par adresse
    J'ai un petit soucis sur une fonction que j'appelle pour me remplir les champs d'une structure.Le fichier ouvert est un mp3, je souhaite récupérer les frames :

    voilà l'appel de la fonction:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    LECTURE(fp,longueur,&fich_mp3);
    et voici le code de la fonction :
    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
    void LECTURE (FILE *fp,int longueur,struct TAG_mp3 *p_mp3){
     
    	char nom_ref[5];
    	char res_ref[50];
    	char flag[3];
    	int taille_ref;
    	int taille;
     
    	taille = 0;
    	do {
     
    	  //nom de la référence
    	  fread(nom_ref,sizeof(char),4,fp);
    	  nom_ref[4] ='\0';
     
    	  //taille de la référence
    	  fread(&taille_ref,sizeof(int),1,fp);
    	  taille_ref = Swap32(taille_ref);
     
    	  //3 flags
    	  fread(flag,sizeof(char),3,fp);
     
          //contenu de la référence
    	  fread(res_ref,sizeof(char),taille_ref-1,fp);
    	  res_ref[taille_ref-1]='\0';
     
    	  taille = (taille + 11 + taille_ref - 1);
     
    	  if (strncmp(nom_ref,"TIT2",4)==0)
    		 strcpy(p_mp3->titre, res_ref);
     
    	  if (strncmp(nom_ref,"TLEN",4)==0)
    		 strcpy(p_mp3->duree, res_ref);
     
    	  if(strncmp(nom_ref,"TRCK",4)==0)
    		 strcpy(p_mp3->track, res_ref);
     
    	  if(strncmp(nom_ref,"TPE1",4)==0)
    		 strcpy(p_mp3->artiste, res_ref);
     
    	  if(strncmp(nom_ref,"TALB",4)==0)
    		 strcpy(p_mp3->album, res_ref);
     
        }
        while (taille <= longueur);
     
    }
    Je n'arrive pas à afficher les champs de ma structure après l'appel de la fonction...par exemple en faisant printf("%s",fich_mp3.track), cela n'affiche rien...LE soucis vient de la transmission de l'adresse...car sans utiliser de fonction, cela fonctionne !!

    Merci

  2. #2
    Membre chevronné Avatar de niglo
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    379
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 379
    Par défaut Re: Problème transmission par adresse
    Si on était en C++, il faudrait faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    void LECTURE (FILE *fp,int longueur,struct TAG_mp3 &p_mp3){}
    Le & permet un passge d'argument par référence, ce qui signifie que tu vas modifié l'objet envoyé. En précisant *, tu te contentes de créer une copie de l'objet placé à l'adresse que tu lui envoie !!!

  3. #3
    Expert confirmé

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Par défaut Re: Problème transmission par adresse
    Citation Envoyé par niglo
    Si on était en C++, il faudrait faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    void LECTURE (FILE *fp,int longueur,struct TAG_mp3 &p_mp3){}
    Le & permet un passge d'argument par référence, ce qui signifie que tu vas modifié l'objet envoyé. En précisant *, tu te contentes de créer une copie de l'objet placé à l'adresse que tu lui envoie !!!
    le C++


    Le code n'a pas l'air faux, montre comment tu déclares ta variable fich_mp3 (et la définition de la structure) et comment tu définis longueur...

    Jc

  4. #4
    Membre chevronné Avatar de niglo
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    379
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 379
    Par défaut Re: Problème transmission par adresse
    Citation Envoyé par fearyourself
    le C++


    C'est pas gentil pour le pauvre C++. Mais bon, le débat C/C++ est un débat de politicien (1)

    1: débat de politicien = débat qui n'aboutit jamais

  5. #5
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut Re: Problème transmission par adresse
    Citation Envoyé par niglo
    Si on était en C++, il faudrait faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    void LECTURE (FILE *fp,int longueur,struct TAG_mp3 &p_mp3){}
    Le & permet un passge d'argument par référence, ce qui signifie que tu vas modifié l'objet envoyé. En précisant *, tu te contentes de créer une copie de l'objet placé à l'adresse que tu lui envoie !!!
    Merci de ne pas raconter n'importe quoi.
    1. on est pas en C++
    2. la passage de l'adresse fait une copie de l'adresse. L'objet n'est pas copié.

  6. #6
    Membre chevronné Avatar de niglo
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    379
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 379
    Par défaut Re: Problème transmission par adresse
    Citation Envoyé par Emmanuel Delahaye
    1. on est pas en C++
    2. la passage de l'adresse fait une copie de l'adresse. L'objet n'est pas copié.
    1. J'avais remarqué mais bon, ca coute rien
    2. J'y étais presque ... la science n'est pas encore en moi

Discussions similaires

  1. Réponses: 8
    Dernier message: 27/03/2008, 15h06
  2. Transmission par valeur ou par adresse
    Par Emmanuel Delahaye dans le forum Langage
    Réponses: 8
    Dernier message: 13/08/2007, 13h44
  3. Réponses: 3
    Dernier message: 29/06/2007, 17h18
  4. Problème : IIS et Restrictions par adresse IP
    Par Chop_chop dans le forum IIS
    Réponses: 17
    Dernier message: 20/03/2007, 16h41
  5. Réponses: 19
    Dernier message: 09/06/2006, 10h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo