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 :

Probleme de fgets


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Juillet 2004
    Messages
    161
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Juillet 2004
    Messages : 161
    Par défaut Probleme de fgets
    Bonjour;
    j'ai un fichier qui a de suite numérique :
    0011222533....etc
    je l'ouvre avec fopen et je le mets dans un tableau avec fgets et mon problème est dans ce tableau
    au fait je voudrais remplir ce tableau(qui est a une dimensions)dans un autre tableau a deux dimension
    voici 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
     
    FILE* fichier = NULL;	
    fichier = fopen("niveaux2.lvl", "r+");
    char TabLvL [NombreDeSpriteparCarteLargeur*NombreDeSpriteparCarteHauteur+1]={0};
    	fgets(TabLvL, NombreDeSpriteparCarteLargeur * NombreDeSpriteparCarteHauteur + 1, fichier);
    //remplissage
    if (fichier != NULL)
        {
    		for (i = 0 ; i < NombreDeSpriteparCarteLargeur ; i++)
    					{
    						for (j = 0 ; j < NombreDeSpriteparCarteHauteur ; j++)
    						   {
    							   l = TabLvL[k];
    							   Niveau[i][j] = TabLvL[k]; 
    							   k++;
    						   }
    					}
    	}
    après le remplissage j'ai que des valeurs 50,hors que ce n'est pas les valeurs qui sont dans le fichier
    après le débogage je trouve dans le tableau TabLvL qu'il y bien les valeurs présente dans le fichiers mais toutes précédé d'un 50!
    j'ai essayer de changer la génération du fichier lvl avec plusieurs éditeur mais le problème est le même
    je voudrais savoir si c'est un problème de programmation ou de fichiers.
    sinon quelle est la solution a ce problème svp?

    merci a vous

  2. #2
    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
    Salut

    après le débogage je trouve dans le tableau TabLvL qu'il y bien les valeurs présente dans le fichiers mais toutes précédé d'un 50!
    j'ai essayer de changer la génération du fichier lvl avec plusieurs éditeur mais le problème est le même
    je voudrais savoir si c'est un problème de programmation ou de fichiers.sinon quelle est la solution a ce problème svp?
    Si c'est ton fichier qui est mal généré, on ne peut pas deviner d'où vient le problème. Si tu ne nous expliques pas comment tu le génères, on ne pourra pas t'aider.

    Par contre, dans le code que tu nous a donné, la variable k n'est pas initialisée. Est-ce qu'elle l'est plus haut ?

    Sinon, on est bien d'accord que fgets écrit une chaine de caractères dans un buffer et non des chiffres ? (cela n'est pas pareil)

  3. #3
    Membre émérite
    Avatar de Elijha
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Avril 2003
    Messages
    314
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Avril 2003
    Messages : 314
    Par défaut
    Bonjour,

    Citation Envoyé par amine008
    Bonjour;
    j'ai un fichier qui a de suite numérique : 0011222533....etc
    Cela ne dit pas si c'est un fichier de type texte ou de type binaire :
    • Si c'est un type texte, tu ne peux pas le mettre directement dans ton tableau, il faut faire une conversion alphanumérique --> numérique.

    • Si c'est un type binaire, comme l'a dit jeroman, fgets n'est pas la bonne solution.
      Si tu es sûr que ton fichier ne contienne que des chiffres (de 0 à 9), il faut utiliser la fonction fread

  4. #4
    Membre confirmé
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Juillet 2004
    Messages
    161
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Juillet 2004
    Messages : 161
    Par défaut
    Bonjour et merci
    la variable k est bien initialisé a 0
    le fichier est fichiers txt que j'ai remplie manuellement avec des chiffre.
    j'ai essayés cette méthode et elle marche
    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
     
    if (fichier != NULL)
        {
    	for (i = 0 ; i < NombreDeSpriteparCarteLargeur*HauteurSprite ; i++)
    		{
                         for (j = 0 ; j < NombreDeSpriteparCarteLargeur*HauteurSprite ; j++)
    			switch (TabLvL[k])
                                   case '0': 
                                    Niveau[j][i] = 0;
                                           break;
                                    case '1': 
                                    Niveau[j][i] = 1;
                                           break;
                                    case '2': 
                                    Niveau[j][i] = 2;
                                           break;
                                    case '3': 
                                    Niveau[j][i] = 3;
                                           break;
                                    case '4': 
                                    Niveau[j][i] = 4;
                                           break;
                                   }
                                 k++;
        }
    }
    sachant que le fichiers ne contient pas un chiffre supérieur a 4

    aussi,je vais essayé la méthode de conversion ,c'est peut être le problème

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

Discussions similaires

  1. Probleme avec fgets
    Par SAKDOSS dans le forum Bibliothèque standard
    Réponses: 5
    Dernier message: 30/12/2007, 15h58
  2. probleme avec fgets et un tableau à 2 dimensions
    Par l1086 dans le forum Bibliothèque standard
    Réponses: 16
    Dernier message: 14/12/2007, 19h43
  3. probleme avec fgets
    Par loan33 dans le forum Langage
    Réponses: 2
    Dernier message: 01/12/2006, 18h24
  4. probleme de fgets
    Par ceres02 dans le forum C
    Réponses: 11
    Dernier message: 16/06/2006, 14h22
  5. probleme avec fgets
    Par semaj_james dans le forum C
    Réponses: 3
    Dernier message: 09/12/2005, 21h00

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