Partage
  • Partager sur Facebook
  • Partager sur Twitter

struture

    27 novembre 2008 à 20:47:13

    Bonjour. J'ai defini la structure suivante

    typedef struct cellule{
    int type;
    char* val;
    struct cellule* suiv;
    } * liste_lexeme;

    puis j'ai créé la fonction suivante:

    void analyse(liste_lexeme L ,FILE *fp ) {
    char* chaine_infol;
    char caractere_lu,caractere_suivant;
    int i; ...

    Comment écrire que je veux mettre chaine_infol dans val? j'espere que ma question est claire (meme si je sais qu'elle est sans doute stupide). Merci

    • Partager sur Facebook
    • Partager sur Twitter
      27 novembre 2008 à 21:05:13

      Non ta question n'est pas du tout stupide ;)

      C'est très simple, il suffit de faire un strcpy (dans les "fonctions et manipulations de chaînes de matéo tu trouvera si tu ne connais pas) et de faire :

      strcpy(cellule.val, chaine_infol);

      J'espère avoir répondu à ta question...
      • Partager sur Facebook
      • Partager sur Twitter
        27 novembre 2008 à 21:14:39

        Bonsoir , les règles ne sont pas la pour rien :colere2: si l'emplois des balises de code est obligatoire , c'est pour que les gens qui veulent t'aider puissent lire ton code .....

        Bon sinon pour ton problème ,je n'utilise pas souvent les structures mais il me semble que lorsqu'une structure est passée à une fonction il faille mettre :


        strcpy(cellule->val, chaine_infol);
        


        (avec une flèche).

        De plus , l'emplois de strcpy est déconseillé (risques de BOF), tu devrais utiliser strncpy ,(si la taille de ta chaîne était 10) ca donnerait ceci :

        strncpy(cellule->val, chaine_infol,9);
        cellule->val[9] = '\0';
        



        Bonne chance ;) .

        • Partager sur Facebook
        • Partager sur Twitter
          27 novembre 2008 à 22:53:53

          Citation : moustick1991

          Bon sinon pour ton problème ,je n'utilise pas souvent les structures mais il me semble que lorsqu'une structure est passée à une fonction il faille mettre :


          strcpy(cellule->val, chaine_infol);
          



          (avec une flèche).



          Non, ça n'a rien à voir, le passage d'une donnée à une fonction ne reçoit aucun traitement de faveur, qu'elle soit structure, de type natif, type énuméré ou autre.
          Le point (.) signifie l'accès au champ d'une structure depuis une instance de la structure.
          La fleche (->) signifie l'accès au champ d'une structure depuis l'adresse d'une instance de cette structure.

          Exemple:
          Cellule cell;
          Cellule *pcell = &cell;
          
          /* Les deux lignes suivantes sont équivalentes: */
          strcpy(cell.val, "toto");
          strcpy(pcell->val, "toto");
          


          Attention toutefois de bien s'assurer que de la mémoire a été allouée au champ val avant d'y copier quoique ce soit avec strcpy ou strncpy !
          • Partager sur Facebook
          • Partager sur Twitter

          struture

          × 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