Partage
  • Partager sur Facebook
  • Partager sur Twitter

mon sscanf marche point

    8 juin 2006 à 11:44:49

    Hello !

    Alors voilà j'ai un p'tit soucis pour changer...
    J'ai un fichier "musiques" qui contient les infos relatives aux musiques de mon programmes, sous la forme :

    numeroDeLaPiste:nom:auteur


    donc ça fait :

    1:Là-bas:Jean-Jacques Goldman
    2:Bonne idée:Jean-Jacques Goldman
    3:Comme toi:Jean-Jacques Goldman
    4:Ensemble:Jean-Jacques Goldman


    (Chu fan !! :p )

    Donc pour choper ça dans mon programme, je fais :


    for( i = 0 ; i < NOMBRE_TOTAL_DES_MUSIQUES ; i++ )
    {
            fgets( musiques[i].tampon , 100 , fichier_musique );
            fprintf( stderr , "%s" , musiques[i].tampon );   
    }


    (j'ai une structure Musiques :
            int numero ;
           
            char nom[50] ;
           
            char auteur[50] ;
           
            char tampon[100] ;
           
            SDL_Surface *surface ;


    Ce qui marche à merveilles, puisque dans mon stderr j'ai :
    1:Là-bas:Jean-Jacques Goldman
    2:Bonne idée:Jean-Jacques Goldman
    3:Comme toi:Jean-Jacques Goldman
    4:Ensemble:Jean-Jacques Goldman


    Le problème c'est lorsque j'essaye de répartir cette chaine dans les différentes variables de ma structure, à l'aide de sscanf :
           
    for( i = 0 ; i < NOMBRE_TOTAL_DES_MUSIQUES ; i++ )
            sscanf( musiques[i].tampon , "%d:%s:%s" , musiques[i].numero , musiques[i].nom , musiques[i].auteur );


    Ceci ne marche pas du tout (erreur de segmentation...)

    Donc si vous voyez quelques chose de pô bien, merci de signaler :):):)
    • Partager sur Facebook
    • Partager sur Twitter
      8 juin 2006 à 11:51:36

      Citation : piclem

              int numero ;
              char nom[50] ;
              char auteur[50] ;
              char tampon[100] ;
              SDL_Surface *surface ;


             
              sscanf( musiques[i].tampon , "%d:%s:%s" , musiques[i].numero , musiques[i].nom , musiques[i].auteur );



      Ceci ne marche pas du tout (erreur de segmentation...)


      Normal. sscanf() avec %d attend l'adresse d'un int. Tu lui donnes la valeur d'un int. Le comportement est indéfini.

      Je suggère fortement que tu vérifies si la valeur retournée par sscanf() est correcte...

      • Partager sur Facebook
      • Partager sur Twitter
      Music only !
        8 juin 2006 à 11:59:31

        Alors j'ai indiqué l'adresse, ça marche <gras> --- Zcode qui supporte pas --- 1 , Là-bas:Jean-Jacques, etc... mais : 3 , Comme, P=´ dommage.... :p ------------------------------</gras> Donc &#231;a marche... merci ! Mais quelqu'un a l'astuce pour convertir là...? :p
        • Partager sur Facebook
        • Partager sur Twitter
          8 juin 2006 à 16:20:08

          Tu aurais pas plus vite fait de lire directement ton fichier avec fscanf sans passer par fgets puis sscanf ?
          Il suffit de récupérer le nombre d'occurence du caractère '\n', ensuite tu alloue ton tableau selon ce nombre, puis tu fait autant de recherche avec fscanf que nésseçaire... Ca me parait plus simple non ?
          • Partager sur Facebook
          • Partager sur Twitter

          mon sscanf marche point

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown