Fgetc(fichier) ne marche pas [c]

Résolu/Fermé
tygro - 22 nov. 2010 à 21:32
 tygro - 23 nov. 2010 à 21:49
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 dimanche 1 novembre 2009 Statut Membre Dernière intervention 31 décembre 2017 148
23 nov. 2010 à 01:40
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
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
up
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 842
23 nov. 2010 à 21:27
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
trop cool sa marche, ^^
merci
0