Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 03/01/2008, à 16:00

Kpиc

[Résolu]Lecture de fichier

Bonjour, je fais actuellement des tests pour m'exercer sur la lecture d'un fichier, mais il y a quelque chose que je ne comprend pas, voici mon code :

#include <stdio.h>
#include <stdlib.h>
 
int main(void)
{
  FILE* fichier = NULL;
  fichier = fopen("test.txt", "r");
  int caractereActuel = 0;
 
  if (fichier != NULL)
    {
      do
        {
          caractereActuel = fgetc(fichier);
          printf("%c", caractereActuel);
          
        }while (caractereActuel != EOF);
        fclose(fichier);
    }
 
  return 0;
}

Mais la console me renvoi ceci après l'exécution du programme :
Voici une chaà®ne de caractère !
�

Pourquoi je reçois ce dernier caractère, alors qu'il n'y a absolument rien après le "!" dans mon fichier ?

Dernière modification par Kpиc (Le 03/01/2008, à 16:56)

Hors ligne

#2 Le 03/01/2008, à 16:20

Sysko le prospecteur

Re : [Résolu]Lecture de fichier

cela  vient certainement du fait  que dans une boucle  do  while ,  le test est effectué  à  la fin de la boucle ,   cela  veut dire qu'il  affichera  le caractère ayant pour code  celui de EOF c'est à  dire c caractère bizarre ,  il  vaut mieux donc  utiliser dans ces cas là  une boucle  while plutot que do  while


Projet tatoeba : projet collaboratif visant à créer un corpus de phrases d'exemples traduites dans le plus de langues possibles

Hors ligne

#3 Le 03/01/2008, à 16:55

Kpиc

Re : [Résolu]Lecture de fichier

Non, le fait d'utiliser une boucle while ne change rien, en revanche j'ai effectué une condition de test pour verifier si "caractereActuel" est différent de EOF, et ça fonctionne smile .

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
  FILE* fichier = NULL;
  fichier = fopen("test.txt", "r");
  int caractereActuel = 0;

  if (fichier != NULL)
    {
      do
	{
	  caractereActuel = fgetc(fichier);
	  if (caractereActuel != EOF)
	    {
	      printf("%c", caractereActuel);
	    }
	}while (caractereActuel != EOF);

	fclose(fichier);
    }


  return 0;
}

Hors ligne

#4 Le 03/01/2008, à 18:25

Sysko le prospecteur

Re : [Résolu]Lecture de fichier

oui  car  en fait dans ma tête  j'aurais  fait  mon  while comme ce-ci

while  ( (car_actu = fgetc(fichier))  != EOF )
{


// ton code

}


Projet tatoeba : projet collaboratif visant à créer un corpus de phrases d'exemples traduites dans le plus de langues possibles

Hors ligne