[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
A voir également:

4 réponses

ekra Messages postés 1870 Date d'inscription   Statut Membre Dernière intervention   342
 
Bonjour :
element* nouveauMot = (element*)malloc(sizeof(element*));

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

:)
0
jojo
 
Bonjour,

Ca ne change rien, toujours la meme erreur..
0
ekra Messages postés 1870 Date d'inscription   Statut Membre Dernière intervention   342
 
Bah ya aussi :
nouveauMot->mot = (char*)malloc(sizeof(char*));
A corriger en :
nouveauMot->mot = (char*)malloc(n*sizeof(char));
0
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
lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570 > 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
info > lami20j Messages postés 21331 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
info > info
 
ok merci
mais ce que je veux c afficher je suis un homme avec les autres (nom prenom ......)
0
lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
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