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

Linux Discussion :

fopen/fscanf en C


Sujet :

Linux

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2014
    Messages : 2
    Points : 2
    Points
    2
    Par défaut fopen/fscanf en C
    Bonsoir à tous !

    J'ai un problème avec un programme en C ! Je souhaite remplir un tableau 20x20 à partir d'un fichier à l'aide des fonctions fopen et fscanf (voici mon code):

    void init_map(int map[20][20])
    {
    int i, j, transfert;

    /* CHARGEMENT DE LA CARTE À PARTIR D'UN FICHIER TEXTE */
    FILE* carte = NULL;
    carte = fopen("/home/turlupyn/codage_universite/projet/carte1", "r");
    if (carte != NULL)
    {
    for(i=0;i<20;i++)
    {
    for(j=0;j<20;j++)
    {
    fscanf(carte,"%d", &transfert);
    map[i][j]=transfert;
    }
    }
    fclose(carte);
    }
    }

    et le fichier que je souhaite lire est le suivant :

    00000000000000000000
    00232300232300232300
    00000000000000000000
    00777777777777777700
    00000000000000000000
    00555555555555555500
    00000000000000000000
    00000000000000000000
    00000000000000000000
    00000000000000000000
    00000000000000000000
    00000000000000000000
    00000000000000000000
    00000000000000000000
    00000000000000000000
    00888888888888888800
    00000000000000000000
    00000000000000000000
    00000000000000000000
    00000000000000000000

    Or, quand j’exécute le programme, il apparaît que le fichier n'as pas été ni lut ni retranscrit dans le tableau map[20][20]..

    Quelqu'un peut-il m'aider ?
    SVP

  2. #2
    Membre averti Avatar de Neolex
    Homme Profil pro
    Recherche emploi Securité informatique
    Inscrit en
    Avril 2011
    Messages
    243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Recherche emploi Securité informatique

    Informations forums :
    Inscription : Avril 2011
    Messages : 243
    Points : 333
    Points
    333
    Par défaut
    Le problème est que ton scanf lit un int et non un seul caractere .
    Tu dois donc remplacer ton scanf par : fscanf(carte,"%1d", &transfert); .

    Tu devrais aussi tester que ton fopen à bien fonctionné.
    Par exemple en faisant après ton fopen :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        if (carte == NULL) {
        	perror("fopen");
        }
    en ne pas oubliant d'inclure

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2014
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Merci beaucoup pour cette réponse si rapide !! ça a parfaitement fonctionné !

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

Discussions similaires

  1. remplacer fopen par fscanf
    Par mycaweb dans le forum Débuter
    Réponses: 9
    Dernier message: 20/12/2011, 20h28
  2. [newbie] fonction fopen et fscanf
    Par sneakz dans le forum Débuter
    Réponses: 5
    Dernier message: 01/05/2009, 14h26
  3. Réponses: 5
    Dernier message: 11/12/2002, 12h31
  4. Ouvrir (fopen) un fichier caché
    Par shef dans le forum C
    Réponses: 2
    Dernier message: 09/09/2002, 09h06
  5. Réponses: 2
    Dernier message: 06/07/2002, 12h36

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