IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

strcat -> segmentation fault mais pourquoi?


Sujet :

C

  1. #1
    Membre régulier
    Inscrit en
    Juillet 2009
    Messages
    89
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 89
    Points : 85
    Points
    85
    Par défaut strcat -> segmentation fault mais pourquoi?
    Bonjour à tous,

    J'ai affaire à une segmentation fault (la fameuse!). Le truc c'est qu'elle à l'air de venir d'un strcat et je vois vraiment pas pourquoi. Je vous met le code que je compile :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    ...
    printf("LABEL_MIN\t%d\n",nLabelMin);
    printf("LABEL_MAX\t%d\n",nLabelMax);
     
    for(n=nLabelMin;n<nLabelMax+1;n++)
    	{
    	fprintf(stderr,"n=%d\t",n);
     
    	printf("Label %d",n);
    	printf("x = %d",x);
    	printf("y = %d",y);
    	printf("z = %d",z);
     
    	sprintf(num_fichier,"%d",n);
    	fprintf(stderr,"num_fichier = %s\t",num_fichier);
    	strcpy(nom_temp,path_name);    //path_name est récupéré en amont du prog
    	fprintf(stderr,"nom_temp = %s\t",nom_temp);
    	strcat(nom_temp,"VolLabel");
    	fprintf(stderr,"nom_temp = %s\t",nom_temp);
    	strncat(nom_temp,num_fichier,10);
    	fprintf(stderr,"nom_temp = %s\t",nom_temp);	
    	printf("fichier cree : %s.acr",nom_temp);
     
            ....
     
    	strcpy(nom_temp,"");
     
            }
    et voila ce que ca m'affiche quand je compile :


    LABEL_MIN 2
    LABEL_MAX 255
    n=2 num_fichier= 2 nom_temp= /data/id19/bones1/kevin/res/temp/ Segmentation fault


    J'avoue que ça me laisse perplexe ( voire pantois..). Si quelqu'un a une idée du pourquoi, qu'il le dise, je suis tout ouïe!!

    D'avance merci!

  2. #2
    Membre émérite
    Avatar de ymoreau
    Homme Profil pro
    Ingénieur étude et développement
    Inscrit en
    Septembre 2005
    Messages
    1 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur étude et développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 154
    Points : 2 834
    Points
    2 834
    Par défaut
    Est-ce que ton tableau de caractères "nom_temp" ne serait pas trop petit pour recevoir la concaténation ? Je ne sais pas ce que fait strcat dans ce cas là.

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    223
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 223
    Points : 193
    Points
    193
    Par défaut
    Effectivement, il serait judicieux de nous montrer la déclaration de tes différents tableaux. Il est fort probable que ce soit un problème de taille (en l'occurrence, trop petite )
    Quand c'est trop, c'est pas bon !

  4. #4
    Membre régulier
    Inscrit en
    Juillet 2009
    Messages
    89
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 89
    Points : 85
    Points
    85
    Par défaut
    C'est bon, problème résolu...
    Le problème venait bien de mes déclaration de tableau ( j'en avait oublié des bouts )
    Mais ô joie ô bonne humeur, plus de seg fault, mais des erreurs d'algo se sont présentées! (mais je les ai corrigées)

    Merci pour votre aide!

    PS : j'ai aussi modifié mon code, et maintenant au lieu d'avoir plein de strcat à la suite, j'ai juste mis :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sprintf(nom_temp,"%sVolLabel%d.acr",path_name,n);
    Voilà

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 5
    Dernier message: 23/12/2009, 11h31
  2. Réponses: 5
    Dernier message: 09/06/2009, 10h30
  3. pourquoi 'segmentation fault'?
    Par thepinguin dans le forum C
    Réponses: 25
    Dernier message: 21/11/2006, 22h23
  4. Segmentation fault : pourquoi ?
    Par Dan_coyle dans le forum C
    Réponses: 5
    Dernier message: 23/04/2006, 20h26
  5. Réponses: 4
    Dernier message: 28/03/2006, 22h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo