Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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" ! sad

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 ) hmm

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" wink

Merci.
@+

Dernière modification par moi.néo (Le 02/12/2007, à 16:57)

Hors ligne