Fgetc(fichier) ne marche pas [c]

Résolu
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;
}


A voir également:

3 réponses

loupius Messages postés 697 Date d'inscription   Statut Membre Dernière intervention   148
 
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.
0
tygro
 
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. 
0
tygro
 
up
0
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
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,
0
tygro
 
trop cool sa marche, ^^
merci
0