Bonjour,
Je suis débutant en c et je suis actuellement un cours sur internet, maintenant j'en suis au chapitre sur le traitement des fichier (lecture et écriture).
Mon problème est le suivant:
en voulant tester des bouts de code assez simples, je ne recois pas le résultat escompté.
Par exemple:
Ne renvois rien, alors que j'ai le caractère 'A' d'écrit dans mon fichier test.txt.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { int chaine; FILE* fichier = NULL; fichier = fopen("test.txt", "r"); if (fichier != NULL) { chaine = fgetc(fichier); printf("%c", chaine); fclose(fichier); } else printf("Le fichier n'a pu etre ouvert"); return 0; }
Ou encore:
qui me renvois un caractère bizarre et le premier caractère de la chaine, alors que dans mon test1.txt j'ai cette chaine:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 #include <stdio.h> #include <stdlib.h> #define TAILLE_MAX 1000 // Tableau de taille 1000 int main(int argc, char *argv[]) { FILE* fichier = NULL; char chaine[TAILLE_MAX] = ""; // Chaîne vide de taille TAILLE_MAX fichier = fopen("test1.txt", "r"); if (fichier != NULL) { fgets(chaine, TAILLE_MAX, fichier); // On lit maximum TAILLE_MAX caractères du fichier, on stocke le tout dans "chaine" printf("%s", chaine); // On affiche la chaîne fclose(fichier); } return 0; }
"Ceci est une chaine."
Et enfin, le seul code où fgetc fonctionne:
Qui me renvois " C e c i e s t u n e c h a i n e . " avec un caractère bizarre avant le premier 'c'.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 #include <stdio.h> #include <stdlib.h> #define TAILLE_MAX 1000 // Tableau de taille 1000 int main(int argc, char *argv[]) { FILE* fichier = NULL; int caractereActuel = 0; fichier = fopen("test1.txt", "r"); if (fichier != NULL) { // Boucle de lecture des caractères un à un do { caractereActuel = fgetc(fichier); // On lit le caractère printf("%c", caractereActuel); // On l'affiche } while (caractereActuel != EOF); // On continue tant que fgetc n'a pas retourné EOF (fin de fichier) fclose(fichier); } return 0; }
Vous noterez que cette fois des espaces ont été ajoutés entre chaque caractère alors qu'il ne lui est demandé nulle part de faire ça.
Quelqu'un aurait une idée de où peut provenir le problème, car je suis coincé depuis des heures à cette étape du cours sans pouvoir passer à autre chose.
Merci
Partager