Fgetc(fichier) ne marche pas [c]
Résolu
tygro
-
tygro -
tygro -
Bonjour,
Mon programme ne marche pas, il ne m'affiche pas a e y i mais il fais defillé le cmd sur une 50 ligne a peu pres et sa m'affiche a la place vers le millieu de ses 50 ligne " ?à ?"
Merci pour votre aide
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
FILE* fichier = NULL;
int caractereActuel = 0;
fichier = fopen("test.txt", "w+");
fprintf(fichier, "a e y i");
if (fichier != NULL)
{
caractereActuel = fgetc(fichier); // On initialise caractereActuel
// Boucle de lecture des caractères un à un
while (caractereActuel != EOF) // On continue tant que fgetc n'a pas retourné EOF (fin de fichier)
{
printf("%c", caractereActuel); // On affiche le caractère stocké dans caractereActuel
caractereActuel = fgetc(fichier); // On lit le caractère suivant
}
fclose(fichier);
}
return 0;
}
Mon programme ne marche pas, il ne m'affiche pas a e y i mais il fais defillé le cmd sur une 50 ligne a peu pres et sa m'affiche a la place vers le millieu de ses 50 ligne " ?à ?"
Merci pour votre aide
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
FILE* fichier = NULL;
int caractereActuel = 0;
fichier = fopen("test.txt", "w+");
fprintf(fichier, "a e y i");
if (fichier != NULL)
{
caractereActuel = fgetc(fichier); // On initialise caractereActuel
// Boucle de lecture des caractères un à un
while (caractereActuel != EOF) // On continue tant que fgetc n'a pas retourné EOF (fin de fichier)
{
printf("%c", caractereActuel); // On affiche le caractère stocké dans caractereActuel
caractereActuel = fgetc(fichier); // On lit le caractère suivant
}
fclose(fichier);
}
return 0;
}
3 réponses
-
Fgetc(fichier) ne marche pas
Oh si ! Mais tu travailles avec un flux, donc il ne faut pas oublier de (re)définir la valeur du pointeur de position.
Voir ici.
Bonne continuation. -
Dsl du retard mais le probleme c'est que je travaille sur windows, et je ne comprend pas se que tu as dit,
Oh si ! Mais tu travailles avec un flux, donc il ne faut pas oublier de (re)définir la valeur du pointeur de position.
-
-
mais le probleme c'est que je travaille sur windows
Ce n'est pas un problème puisque le C est un langage portable.
Le lien qu'il t'a donné s'applique donc également sur Windows.
Pour l'explication :
Tu ouvres le fichier en w+. Le fichier sera donc vide. Le Ensuite tu écris dedans "a e y i", très bien. Le problème est que si tu lis le fichier, tu liras les caractères après le "i", c'est à dire EOF.
Il faudrait que tu réinitialises le pointeur de flux en début de fichier avec un rewind : http://www.linux-france.org/article/man-fr/man3/fseek-3.html
Un simple rewind(fichier) juste après ton fprintf fera l'affaire.
Cdlt, -
-