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 :

segmentation fault lors de l'utilisation de strcpy


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 89
    Par défaut segmentation fault lors de l'utilisation de strcpy
    bonjours
    en fait j ai un fichier qui contient bonjour toto
    comment va tu
    ok


    j ai bie lis ce fichier ligne par ligne,aprés je voudri le stocké dans un tableau[][]
    j ai utulisé la fonction strcpy()
    la ligne ou il ya cette fonction j ai 2 erreurs warning ,
    voila le code
    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
    #include<stdio.h>
    #include<stdlib.h>
    #define TAILLE_MAX 1000 // Tableau de taille 1000
    #define TAILLE_LIG 9999 //Nombre MAXIMUM DE LIGNE ds un fichier
    #define TAILLE_COL 999//Nombre maximum de coloonne ds un fichier
    int main(int argc, char *argv[])
    {
        int i;
        char tableau[TAILLE_LIG][TAILLE_COL];
        FILE* fichier = NULL;
        char chaine[TAILLE_MAX] = ""; // Chaîne vide de taille TAILLE_MAX
     
        fichier = fopen("test.txt", "r");
     
        if (fichier != NULL)
        {
            while((fgets(chaine, TAILLE_MAX, fichier)!=NULL)&&i<TAILLE_LIG) // On lit maximum TAILLE_MAX caractères du fichier, on stocke le tout dans "chaine"
    {        
     
    	printf("%s", chaine); // On affiche la chaîne
    	strcpy(tableau,chaine);
    i++;
     }
            fclose(fichier);
        }
     
        return 0;
    }
    Cordialement

  2. #2
    Membre expérimenté Avatar de quetzacoatl
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 168
    Par défaut
    Vous vouliez sans doute faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    strcpy(tableau[i],chaine);

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 89
    Par défaut
    Citation Envoyé par quetzacoatl Voir le message
    Vous vouliez sans doute faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    strcpy(tableau[i],chaine);
    merci pour votre intervention mais il tableau est un tablo de deux dimention

  4. #4
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    C'est bien parce que c'est un tableau à 2 dimensions que quetzacoatl propose la forme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    strcpy(tableau[i],chaine);

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 89
    Par défaut
    Citation Envoyé par diogene Voir le message
    C'est bien parce que c'est un tableau à 2 dimensions que quetzacoatl propose la forme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    strcpy(tableau[i],chaine);
    ca marche pas ,toujours un warning et segmentationfault

  6. #6
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 832
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 832
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par simplyc Voir le message
    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
    #include<stdio.h>
    #include<stdlib.h>
    #define TAILLE_MAX 1000 // Tableau de taille 1000
    #define TAILLE_LIG 9999 //Nombre MAXIMUM DE LIGNE ds un fichier
    #define TAILLE_COL 999//Nombre maximum de coloonne ds un fichier
    int main(int argc, char *argv[])
    {
        int i;;
        char tableau[TAILLE_LIG][TAILLE_COL];
        FILE* fichier = NULL;
        char chaine[TAILLE_MAX] = ""; // Chaîne vide de taille TAILLE_MAX
     
        fichier = fopen("test.txt", "r");
     
        if (fichier != NULL)
        {
            while((fgets(chaine, TAILLE_MAX, fichier)!=NULL)&&i<TAILLE_LIG) // On lit maximum TAILLE_MAX caractères du fichier, on stocke le tout dans "chaine"
    	{        
    
    		printf("%s", chaine); // On affiche la chaîne
    		strcpy(tableau[i],chaine);
    		i++;
    	}
            fclose(fichier);
        }
    
        return 0;
    }
    ca marche pas ,toujours un warning et segmentationfault
    Je ne vois nulle part, dans ton code, d'initialisation pour "i"...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  7. #7
    Membre Expert
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 104
    Par défaut
    C'est normal que ça plante : regarde la taille de ton tableau, il explose la pile. Il faut faire de l'allocation dynamique (ou bien beaucoup diminuer TAILLE_LIG).

    Trois autres problèmes :
    1) "i" n'est pas initialisé.
    2) Il faut inclure le fichier "string.h".
    3) TAILLE_MAX et TAILLE_COL n'ont pas la même taille. C'est susceptible de générer un bug. Si le '\0' se trouve à la 1000è position de "chaine", la copie fera déborder la ligne du tableau "tableau" (ie. le '\0' se retrouvera en début de ligne suivante).

    Le compilateur, s'il est bien réglé, doit obligatoirement signaler les deux premiers problèmes.

    En outre, il est préférable d'éliminer l'éventuel '\r' ou '\n' après avoir rempli le buffer "chaine" (en le remplaçant par '\0').

  8. #8
    Membre expérimenté Avatar de quetzacoatl
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 168
    Par défaut
    Etant donné que
    #define TAILLE_MAX 9
    ça m'étonnerait que vous ayez "a", vous n'auriez pas plutôt "o"?

Discussions similaires

  1. Segmentation Fault lors de mise à jour d'image par callback
    Par bboy_keen dans le forum GTK+ avec C & C++
    Réponses: 7
    Dernier message: 07/12/2010, 00h16
  2. segmentation fault lors d'un pthread_create
    Par Anouschka dans le forum POSIX
    Réponses: 2
    Dernier message: 09/06/2010, 17h53
  3. erreur "Segmentation Fault" lors de l'import d'un dump
    Par farenheiit dans le forum Import/Export
    Réponses: 13
    Dernier message: 28/11/2007, 10h17
  4. PB segmentation fault lors d'installation RPM
    Par Asce_ dans le forum RedHat / CentOS / Fedora
    Réponses: 3
    Dernier message: 06/11/2007, 11h22
  5. Strcpy et segmentation fault...
    Par laurent_ifips dans le forum C
    Réponses: 15
    Dernier message: 11/12/2005, 11h23

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