[C] Initialiser une chain de caractères

Bonjour,

Je n'arrive pas a initialiser une chaine de caractères qui se trouve dans une structure.

Voila ma structure:

typedef struct element element;
struct element
{
	char * mot;
    struct element *nxt;
};
typedef element* llist;


et ce que j'essai de faire :

llist fcskiplist (llist skiplist, char * motaAjoute)
{    
    element* nouveauMot = (element*)malloc(sizeof(element*));
    nouveauMot->mot = (char*)malloc(sizeof(char*));


La premiere ligne passe bien, le nouveauMot est bien initialisé, mais pas nouveauMot->mot, j'ai droit a une erreur access violation writing avec ce code.

Comment faire ?.

merci

4 réponses

  • Votes
  • Date
  • Date décroissante
  1. Bonjour :
    element* nouveauMot = (element*)malloc(sizeof(element*));

    Correction :
    element* nouveauMot = (element*)malloc(sizeof(element));

    :)
    1. Bah ya aussi :
      nouveauMot->mot = (char*)malloc(sizeof(char*));
      A corriger en :
      nouveauMot->mot = (char*)malloc(n*sizeof(char));
      1. bonjour ,
        je suis debutante en c et j'arrive pas à accéder à une chaine de caractére qui se trouve dans une structure

        typedef struct personne personne;
        struct personne {

        char nom [];

        };

        et dans mon code .c

        j'ai declaré un tableau de type personne

        personne tab[3] ;

        et maintenant je veux afficher le nom des 3 personnes de mon tableau
        j'ai fait ceci:

        tab[0].nom ="alain";

        es que quelcun peut m'aider
        merci
        mais ça ne marche pas
      2. Modérateur
        @infoSalut,

        lami20j@debian:~/trash$ cat ccm11.c
        #include <stdio.h>
        #include<string.h>
        
        int main ()
        {
          typedef struct personne personne;
          struct personne {
                  char nom [50];
          };
          personne tab[3] ;
          strcpy(tab[0].nom,"alain");
          printf("%s\n",tab[0].nom);
          return 0;
        }
        lami20j@debian:~/trash$ gcc ccm11.c
        lami20j@debian:~/trash$ ./a.out
        alain

      3. @lami20jmerci beaucoup pour ta réponse
        et j'ai aussi un autre probléme si ça vous dérange pas
        dans ma structure j'ai un booléen pour dire que c'est un homme ou une femme
        alors j'ai fait
        int sexe ;
        et je veut dire que si tab[i].sexe = 1 alors une femme sinon un homme
        et je veux que ça soit afficher dans le printf total celui qui contient tous

        for (int i=0 ; i<=2 ; i++)
        {
        tab [i].age;
        tab [i].nom;
        tab [i].sexe;
        tab [i].taille;
        tab [i].prenom;
        tab [i].celibataire;

        if (tab [i]= 0 )
        {
        printf ("je suis une femme");

        }
        else if (tab [i] =1)
        {
        printf ( "je suis un homme ");
        }

        printf ("mon nom est %s \n mon prenom est %s \n ma taille est %d\n mon age est %d\n mon sexe est %d\n et je suis %d\n ", tab [i].nom ,tab [i].prenom, tab [i].taille , tab [i].age , tab [i].sexe , tab [i].celibataire);
      4. @infook merci
        mais ce que je veux c afficher je suis un homme avec les autres (nom prenom ......)
    2. Modérateur
      Re,

      et je veut dire que si tab[i].sexe = 1 alors une femme sinon un homme
      pour tester une égalité il faut utiliser ==
      = c'est l'opérateur pour affectation