Pages : 1
#1 Le 01/12/2007, à 14:45
- moi.néo
[Résolu] Erreur de segmentation !
Salut.
Voici une fonction "strcmp_num" qui compare (de la même façon que "strcmp" avec les chaines de caractères) le premier nombre compris dans 2 chaines de caractères.
Le problème, c'est que lorsque j'exécute le prog, ça me met "erreur de segmentation" !
Je sais que la fonction "chaine_en_entier" fonctionne très bien car je l'ai testé toute seule.
Mais avec ces 3 fonctions, ça marche pas, et je vois pas pourquoi.
Si quelqu'un a une idée ...
#include <stdio.h>
#include <stdlib.h>
int chaine_en_entier(char *s) {
int i = 0, i2 = 0;
char *s_temp;
while(s[i] != '\0') {
if(s[i] >= '0' && s[i] <= '9') {
s_temp[i2] = s[i];
i++;
i2++;
while(s[i] != '\0' && (s[i] >= '0' && s[i] <= '9')) {
s_temp[i2] = s[i];
i++;
i2++;
}
break;
}
i++;
}
s_temp[i2] = '\0';
return(atoi(s_temp));
}
int strcmp_num(char *s, char *t) {
int s_num = chaine_en_entier(s);
int t_num = chaine_en_entier(t);
if(s_num < t_num)
return -1;
else if(s_num > t_num)
return 1;
else
return 0;
}
int main () {
// test :
char *s="cou6cou";
char *t="coucou12cou";
printf("%d",strcmp_num(s,t));
// 6<12 donc strcmp_num(s,t)=-1
}
Dernière modification par moi.néo (Le 02/12/2007, à 16:57)
Hors ligne
#2 Le 01/12/2007, à 15:03
- tructu
Re : [Résolu] Erreur de segmentation !
salut ,
a premier vu , je dirait que c'est parceque tu n'alloues pas de memoire a char *s_temp;
essaye en remplacant par char s_temp[255]; ou en allouant de la memoire et vois si tu a tjs un segfault .
#3 Le 01/12/2007, à 16:39
- slapierre
Re : [Résolu] Erreur de segmentation !
char s[] = "cou6cou";
char t[] = "coucou12cou";
"Le spectre de la folie nous empêchera-t-il de hisser l'étendard de l'imagination?" - André Breton
Hors ligne
#4 Le 01/12/2007, à 18:55
- moi.néo
Re : [Résolu] Erreur de segmentation !
Le truc c'est que je peux plus tester ( à cause de ça : http://forum.kubuntu-fr.org/viewtopic.php?pid=1364106#p1364106 )
Hors ligne
#5 Le 01/12/2007, à 22:20
- s@mson
Re : [Résolu] Erreur de segmentation !
salut,
c'est pas une réponse, mais tu pourrais essayer de debogguer avec ddd, le tutoriel du user-manuel permet le prendre vite en main
Hors ligne
#6 Le 02/12/2007, à 16:57
- moi.néo
Re : [Résolu] Erreur de segmentation !
Ca y est, j'ai résolu mon problème du post 4 et j'ai pu tester.
tructu avait résond, il fallait allouer "s_temp"
Merci.
@+
Dernière modification par moi.néo (Le 02/12/2007, à 16:57)
Hors ligne