Pages : 1
#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 .
#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
Pages : 1