[C] Initialiser une chain de caractères

Fermé
jojo - 9 mars 2007 à 21:25
 info - 5 déc. 2008 à 19:06
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 vendredi 15 avril 2005 Statut Membre Dernière intervention 24 juillet 2014 342
9 mars 2007 à 21:55
Bonjour :
element* nouveauMot = (element*)malloc(sizeof(element*));

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

:)
0
Bonjour,

Ca ne change rien, toujours la meme erreur..
0
ekra Messages postés 1870 Date d'inscription vendredi 15 avril 2005 Statut Membre Dernière intervention 24 juillet 2014 342
10 mars 2007 à 21:07
Bah ya aussi :
nouveauMot->mot = (char*)malloc(sizeof(char*));
A corriger en :
nouveauMot->mot = (char*)malloc(n*sizeof(char));
0
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 jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569 > info
5 déc. 2008 à 16:51
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 jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019
5 déc. 2008 à 18:21
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
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 jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
5 déc. 2008 à 19:00
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