Syntaxe au niveau de liste chainée c

Fermé
elwess20 Messages postés 26 Date d'inscription samedi 1 janvier 2011 Statut Membre Dernière intervention 15 janvier 2011 - Modifié par elwess20 le 8/01/2011 à 23:24
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 - 8 janv. 2011 à 23:01
Bonsoir,
mon programme permet de mettre une fichier dans une liste chainée,le programme marche bien au niveau de separation en tre les mot,mais il bloque seulement au niveau de liste chainée,je vous en prie de m'aider,vraiment je me suis totalement bloqué,je vous mettre le code et les erreurs.
merci

4 réponses

KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
Modifié par KX le 8/01/2011 à 22:00
En fait ce n'est pas tes seules erreurs, voici ce que me dit Visual Studio.
Commence par corriger les erreurs de syntaxe...

29 error C2040: '!=' : les niveaux d'indirection de 'char *' et de 'int' sont différents 
29 error C2446: '!=' : pas de conversion de 'int' en 'char *' 
37 error C2440: 'initialisation' : impossible de convertir de 'void *' en 'Liste *' 
39 error C2275: 'tete' : utilisation non conforme de ce type comme expression 
40 error C2065: 'nouveau' : identificateur non déclaré 
40 error C2513: 'Liste *' : aucune variable déclarée avant '=' 
41 error C2040: '!=' : les niveaux d'indirection de 'char *' et de 'int' sont différents 
41 error C2446: '!=' : pas de conversion de 'int' en 'char *' 
43 error C2059: erreur de syntaxe : ')' 
43 error C2513: 'Liste *' : aucune variable déclarée avant '=' 
44 error C2143: erreur de syntaxe : absence de ';' avant '->' 
44 error C2143: erreur de syntaxe : absence de ';' avant '->' 
44 warning C4091: '' : ignoré à gauche de 'Liste *' quand aucune variable n'est déclarée 
59 fatal error C1071: fin de fichier inattendue dans un commentaire

La confiance n'exclut pas le contrôle
0
elwess20 Messages postés 26 Date d'inscription samedi 1 janvier 2011 Statut Membre Dernière intervention 15 janvier 2011
Modifié par elwess20 le 8/01/2011 à 23:25
merci bcp pour votre reponse,
j'ai corrigé les erreurs de syntaxe,mais il existe toujours les meme erreurs
0
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
8 janv. 2011 à 22:40
Tu utilises mal les typedef, et n'oublie pas les cast devant malloc.

Modifie cette partie du code :

typedef struct Liste Liste;
struct Liste {
char *fait;
char *regle;
struct Liste* psuivant;
};
typedef Liste *Nouveau;
typedef Liste * pcourant;
typedef Liste * tete;

...

Liste* Nouveau=malloc(sizeof(Liste));

Comme ceci :

struct Liste
{
	char *fait;
	char *regle;
	struct Liste* psuivant;
}
*Nouveau, *pcourant, *tete;

...

Nouveau=(Liste*) malloc(sizeof(Liste));
0
elwess20 Messages postés 26 Date d'inscription samedi 1 janvier 2011 Statut Membre Dernière intervention 15 janvier 2011
Modifié par elwess20 le 8/01/2011 à 23:00
merci bcp pour votre reponse,maintenant je n'ai pas des erreurs mais seulemnt erreur de segmentation,j'ai bien organisé mon code pour qu'il soit plus lisble .
j'ai utilise le printf pour savoir l'emplacement de l'erreur,et j'ai constaté qu'il se trouve dans cette partie

tete=Nouveau;
                              if((tab != NULL )||(tab !="regle"))
                               {
                                pcourant=(Liste*)malloc(sizeof (Liste));
                                pcourant->fait=tab;
printf("%s\n",Nouveau->fait);
                                       if(tete!=NULL)
                                         {
                                           pcourant=tete;
                                           while(pcourant->psuivant != NULL)
                                           Nouveau->psuivant=pcourant;
                                         }
                                 Nouveau=tete;
                                      while(Nouveau !=NULL)
                                      {
                                      Nouveau=Nouveau->psuivant;
                                      printf("%s\n",Nouveau->fait);

0
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
8 janv. 2011 à 23:01
J'ai un avertissement pour ce code, il serait bon de regarder de ce côté là
38 warning C4700: variable locale 'tete' non initialisée utilisée
0