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 :

Problème lecture fichier avec fscanf


Sujet :

C

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2013
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Octobre 2013
    Messages : 10
    Points : 6
    Points
    6
    Par défaut Problème lecture fichier avec fscanf
    Bonjour j'ai un problème avec une fonction d'un de mes programmes, elle est censé lire un fichier en entrée ( une matrice de 3 par 3) et retourné un tableau contenant les valeurs de ce fichiers, je n'arrive cependant pas à lire mon fichier (cela me produit un segfault)
    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
    int** getKernel(char* kernel)
    {
        int i = 0;
        int j = 0;
        int **p = (int**) malloc(sizeof (int) * 3);
        FILE *file = NULL;
        file =fopen(kernel,"r");
        for ( i = 0; i < 3; i++)
        {
            puts("yolo");
            p[i] = (int*) malloc( sizeof (int) * 3);
            for ( j = 0; j < 3; j++)
            {
                printf("%d %d", i, j);
                puts("yolo");
                fscanf(file, "%d", &p[i][j]);
                //printf("%d", p[i][j]);
            }
        }
        //fclose(file);
        return p;
    }
    J'ai éussi à isolé le problème sur le fscanf, mais je ne vois vraiment pas pourquoi il segfault, de plus le fichier ne veut pas se fermer ( fclose) sinon il se segfault aussi. Si vous pouviez m'aider. Merci d'avance

  2. #2
    Expert éminent sénior
    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
    Points : 13 926
    Points
    13 926
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ...
       int **p = (int**) malloc(sizeof (int *) * 3);
    ...
    Publication : Concepts en C

    Mon avatar : Glenn Gould

    --------------------------------------------------------------------------
    Une réponse vous a été utile ? Remerciez son auteur en cliquant le pouce vert !

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2013
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Octobre 2013
    Messages : 10
    Points : 6
    Points
    6
    Par défaut
    Merci beaucoup pour la réponse, j'ai compris pourquoi je devais mettre une étoile mais ça segfault toujours au même endroit...

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Commence pas vérifier si ton fichier est bien ouvert :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    file = fopen(kernel,"r");
    if(file != NULL) {
        // ton code
    } else {
        // erreur ouverture
    }

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2013
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Octobre 2013
    Messages : 10
    Points : 6
    Points
    6
    Par défaut
    Mais ça voudrait dire quoi une erreur d'ouverture de fichier?

  6. #6
    Invité
    Invité(e)
    Par défaut
    Par exemple un mauvais chemin fourni.
    Dans tous les cas, tu peux avoir la cause avec le code d'erreur errno, que tu peux lire avec perror :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    file = fopen(kernel,"r");
    if(file != NULL) {
        // ton code
    } else {
        perror("Erreur ouverture : ");
        return NULL;
    }
    [EDIT] @Bktero exact !
    Dernière modification par Invité ; 18/11/2013 à 17h02.

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2013
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Octobre 2013
    Messages : 10
    Points : 6
    Points
    6
    Par défaut
    C'est bon en fait je ne mettait pas le nom du bon fichier X)

  8. #8
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juin 2009
    Messages
    4 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 481
    Points : 13 677
    Points
    13 677
    Billets dans le blog
    1
    Par défaut
    @Winjerome: je pense que tu voulais dire perror(), non ?

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

Discussions similaires

  1. problème lecture fichier avec structures de données
    Par hannibal007 dans le forum Débuter
    Réponses: 3
    Dernier message: 09/04/2013, 19h51
  2. Réponses: 2
    Dernier message: 23/06/2009, 08h42
  3. quelques soucis de lecture de fichiers avec fscanf
    Par monsieurab dans le forum Bibliothèque standard
    Réponses: 2
    Dernier message: 05/11/2008, 14h28
  4. Problème de lecture fichier avec std::getline
    Par marcootz dans le forum C++Builder
    Réponses: 13
    Dernier message: 15/05/2008, 15h42
  5. Problème lecture fichier avec >>
    Par C1rcus dans le forum C++
    Réponses: 2
    Dernier message: 18/11/2007, 18h19

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