
Envoyé par
Emmanuel Delahaye

Envoyé par
Man_Utd
mais en retirant l'initialisation comme je l'ai dit,le seg fault persiste à cette ligne
Tu ne peux déréférencer un pointeur qui si il est valide.
char *p = NULL; : p est explicitement invalide
char *p; p est non initialisé donc implicitement invalide.
Pourquoi tu veux mettre ce 0. Laisse le tranquille, ne fait rien !
Je souhaites mettre '\0' pour recuperer les elements.
par exemple si ma chaine est :
"125 1254 788 bonjour bonsoir"
je place '\0' juste apres le 5 de 125,puis je fais de meme...
Lorsqu' il ne restera qu'un element à analyser "bonsoir" ma boucle s'arretera car in n'y aura plus d'espace.
Je mets un bout de code (plus complet):
PS:le code est pour les chiffres mais c'est le meme principe pour les mots
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
|
Arbre CreerArbreFonction(char **ligne)
{
Environnement Env;
double val;
char *chiffre;
char *sep = NULL;
int n;
/*ne sert pas pour resoudre le seg fault*/
Arbre a = malloc(sizeof(Noeud));
if(a == NULL)
{
fprintf(stderr,"erreur allocation de l'arbre\n");
return NULL;
}
while(**ligne != '\0')
{
/* c'est un chiffre */
if(isdigit(**ligne) || **ligne == '.')
{
chiffre = *ligne;
sep = strchr(*ligne,' ');
/* il n'y a pas d'espace donc chaine se termine par '\0' */
if(sep == NULL)
{
**ligne = '\0';
}
else
{
*sep = '\0';
*ligne = sep;
(*ligne)++;
espace(ligne);
}
if(EstDouble(chiffre,&val))
{
fprintf(stderr,"le chiffre : '%s' n'est pas correctement ecrit\n",chiffre);
return NULL;
}
<...> |
Partager