[C] Initialiser une chain de caractères

jojo -  
 info -
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

  1. ekra Messages postés 1873 Statut Membre 342
     
    Bonjour :
    element* nouveauMot = (element*)malloc(sizeof(element*));

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

    :)
    0
  2. jojo
     
    Bonjour,

    Ca ne change rien, toujours la meme erreur..
    0
  3. ekra Messages postés 1873 Statut Membre 342
     
    Bah ya aussi :
    nouveauMot->mot = (char*)malloc(sizeof(char*));
    A corriger en :
    nouveauMot->mot = (char*)malloc(n*sizeof(char));
    0
    1. info
       
      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
      0
      1. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571 > info
         
        Salut,

        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

        0
      2. info > lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention  
         
        merci 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);
        0
      3. info > info
         
        ok merci
        mais ce que je veux c afficher je suis un homme avec les autres (nom prenom ......)
        0
  4. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    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
    0