Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1193 connectés 

  FORUM HardWare.fr
  Programmation
  C

  Segmentation fault sur chaine de caractère. Bizarrrre

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Segmentation fault sur chaine de caractère. Bizarrrre

n°1723834
jijiz
Posté le 24-04-2008 à 15:59:38  profilanswer
 

Bonjour à tous,
 
J'ai un problème curieux,  
 
Lorsque j'appelle deux fois de suite ce code :
 

gchar c_nouveau_nom[30] = "";        
 // Scinde et copie le nom de l'image dans nom  
 strcpy(c_nouveau_nom,strtok(ps_Struct->t_nom_image[i],"." ));
 // Ajout de _rectif à  la fin de la chaine
 strcpy(c_nouveau_nom, "_rectif" );
  // Scinde et copie l extention de limage
 strcpy(c_nouveau_nom,strtok(NULL,"." ));
        // enregistrement de la convolution entre le masque et l'image


 
L 'exécution fait un segmentation fault sur la première ligne, je ne comprends pas pourquoi..
 
Merci


Message édité par jijiz le 24-04-2008 à 16:00:02
mood
Publicité
Posté le 24-04-2008 à 15:59:38  profilanswer
 

n°1723872
tpierron
Posté le 24-04-2008 à 16:19:32  profilanswer
 

Bah, moi je vois plein de trucs qui merdent dans ton code :
 

  • strtok va modifier ta chaine (sans la restaurer), du coup lors du second appel tu te tapes un NULL.
  • strcpy ça n'est pas la même chose que strcat.
  • Et sinon les buffer overflow t'as déjà entendu parlé de ça ? Edit: surtout avec 30 caractères comme buffer.


Statistiques : 4 lignes de code, 3 lignes foireuses.
 


Message édité par tpierron le 24-04-2008 à 16:22:01
n°1723879
jijiz
Posté le 24-04-2008 à 16:27:32  profilanswer
 

bon ok, dslé j'ai fait de la merde pour le cat (j'ai confondu... je vais m'autoflageler). Et oui c'est vrai que strtok modifie la chaine, je vais empecher d'appeler deux fois cette fonction.
 
Merci !
 
Ca marche :

       // Convolution de pix_masque avec l'image en cours
        // nouveau nom de l'image :
 gchar c_nouveau_nom[30] = "";
        gchar c_tmp[80] = "";
        strcpy(c_tmp, ps_Struct->t_nom_image[i]);
        //gchar tmp[80] = "";
         
 // Scinde et copie le nom de l'image dans nom  
 strcpy(c_nouveau_nom,strtok(c_tmp,"." ));
 // Ajout de _rectif à  la fin de la chaine
 strcat(c_nouveau_nom, "_rectif." );
  // Scinde et copie l extention de limage
 strcat(c_nouveau_nom,strtok(NULL,"." ));
 
        printf("Nom de la nouvelle image : %s\n",c_nouveau_nom);
        // enregistrement de la convolution entre le masque et l'image


Message édité par jijiz le 24-04-2008 à 16:32:04

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  Segmentation fault sur chaine de caractère. Bizarrrre

 

Sujets relatifs
Comment trier des chaines de caractère dans un tableau ?logiciel pour comparer 2 fichiers caractere par caractere
Commencer la recherche au rang 'n' de la chaineProblème au niveau d'une chaîne de caractères
Récuperer un élément dans une chaine ( USER_AGENT )Courbes avec Qwt (erreur de segmentation)
Manipulation de chaine caractère par boucleun segementation fault a cause d'un fclose???
Recuperation de la premier caractere du contenu d'une variable 
Plus de sujets relatifs à : Segmentation fault sur chaine de caractère. Bizarrrre


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR