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 :

Erreur de lecture fichier


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2015
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2015
    Messages : 2
    Par défaut Erreur de lecture fichier
    Bonjours a tous !!
    je ne comprend pas l'erreur dans le programme pour la lecture d'un ficher en c

    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    #include <stdio.h> 
    #include <stdlib.h> 
     
    // Exemple de lecture de fichier 
    // L'appel du programme en console se fait comme suit : 
    // <nom_programme> <nom_fichier> 
    // ce programme considère que notre fichier contient des lignes composées de : 
    // Entier,Chaine,Réel,Entier 
    // le séparateur est une virgule, voir exemple.txt fourni avec ce programme 
    int main(int argc, char* argv[]) 
    { 
        if (argc < 2) 
        { 
            printf("L'argument doit être un nom de fichier."); 
            return -1; 
        } 
     
        // récupération du nom de fichier passé en  
        // argument de la commande du programme 
        char const* const fileName = argv[1];  
     
        // Ouverture du flux de fichier 
        FILE* file = fopen(fileName, "r"); 
     
        // Vérification de la bonne ouverture du fichier 
        if(!file) 
        { 
            printf("L'argument doit être un nom de fichier."); 
            return -2; 
        } 
     
        char line[256];  // contiendra la chaine de caractères d'une ligne 
        char *substr;    // contiendra la chaine de caractères extraite de la ligne 
        int nblines = 0; // on va compter le nombre de ligne avec cette variable 
     
        while (fgets(line, sizeof(line), file)) { 
     
            // affichage de la ligne lue 
            printf("%s", line); 
     
            // la fonction strtok découpe la chaine « line » en utilisant le 
            // séparateur virgule "," 
            // elle retourne la première chaine découpée 
            substr = (char*) strtok (line, ","); 
     
            // compteur de découpe : i ira de 1 à 4 car il y a 4 valeurs par ligne 
            int i = 0; 
     
            // on parcourt le valeur de la ligne 
            while(substr != NULL) 
            { 
                i++; 
                if (i==1)         // la première valeur est un entier 
                    printf("type = %d\n", atoi(substr)); 
                else if (i==2)     // la 2nde valeur est une chaine 
                    printf("type = %s\n", substr); 
                else if (i==3)     // la 3ème valeur est un Réel 
                    printf("type = %f\n", atof(substr)); 
                else if (i==4)     // la 4ème valeur est un entier 
                { 
                    printf("type = %d\n", atoi(substr)); 
                    i = 0; 
                } 
     
                // lorsque la fonction strtok est appelée avec NULL 
                // elle retourne les découpes suivantes de la même legne 
                substr = (char*)strtok (NULL, ","); 
            } 
            nblines++; 
        }

    je le test avec un fichier .txt
    Fichiers attachés Fichiers attachés

  2. #2
    Expert éminent

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par défaut
    Et quel est ton symptome?

    Pourquoi penses-tu que c'est l'ouverture plutot que la lecture ou l'interprétation de ce qui a été lu?

  3. #3
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2015
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2015
    Messages : 53
    Par défaut
    Bonjour = )!

    Pour t'aider on aura besoin de savoir comment tu test ton programme et qu'elle est l'erreur ^^

  4. #4
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2015
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2015
    Messages : 2
    Par défaut
    je le compile avec ggc en console pas souci mais a l'exe une erreur apparaît c'est Erreur de segmentation (core dumped)

  5. #5
    Expert éminent

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par défaut
    Donc, tu tapes dans un pointeur qui ne t'appartient pas, ou en dehors d'un tableau.

    Il faut a priori vérifier scrupuleusement la doc de strtok, qui pose toujours des tas de soucis.

  6. #6
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2015
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2015
    Messages : 53
    Par défaut
    Citation Envoyé par larode974 Voir le message
    je le compile avec ggc en console pas souci mais a l'exe une erreur apparaît c'est Erreur de segmentation (core dumped)
    As tu tenté de debug tout ça avec GDB ?

Discussions similaires

  1. Réponses: 6
    Dernier message: 23/01/2010, 01h03
  2. Erreur de lecture fichier Excel
    Par fpascal dans le forum C++Builder
    Réponses: 13
    Dernier message: 25/02/2008, 16h54
  3. Erreur de lecture de fichier HyperFile
    Par wkd dans le forum WinDev
    Réponses: 2
    Dernier message: 19/07/2006, 12h53
  4. [Ada] Erreur de lecture de fichier
    Par Geeky dans le forum Ada
    Réponses: 4
    Dernier message: 05/06/2006, 13h53
  5. Erreur de lecture dans un fichier
    Par acieroid dans le forum C++
    Réponses: 9
    Dernier message: 30/04/2006, 20h39

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