A voir également:
- Problème de lecture de fichier
- Fichier rar - Guide
- Confirmation de lecture whatsapp - Guide
- Fichier host - Guide
- Comment ouvrir un fichier epub ? - Guide
- Comment réduire la taille d'un fichier - Guide
4 réponses
yg_be
Messages postés
23361
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
29 novembre 2024
Ambassadeur
1 556
20 mai 2020 à 13:43
20 mai 2020 à 13:43
bonjour, peux-tu utiliser les balises de code quand tu postes du code?
https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
l'opérateur de comparaison en C est
le simple
https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
l'opérateur de comparaison en C est
==
le simple
=fait une assignation, pas une comparaison.
Phil_1857
Messages postés
1872
Date d'inscription
lundi 23 mars 2020
Statut
Membre
Dernière intervention
28 février 2024
168
Modifié le 20 mai 2020 à 16:38
Modifié le 20 mai 2020 à 16:38
Bonjour melodia22,
Je me demande à quoi sert
char c = fgetc(fp); ?????
De plus moi je lirais d'abord dans le fichier, puis j'imprimerais à l'écran:
Je me demande à quoi sert
char c = fgetc(fp); ?????
De plus moi je lirais d'abord dans le fichier, puis j'imprimerais à l'écran:
while (c != EOF) { c = fgetc(fp); printf("%c",c); }
[Dal]
Messages postés
6194
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
11 octobre 2024
1 092
Modifié le 22 mai 2020 à 17:00
Modifié le 22 mai 2020 à 17:00
Dans le code de melodia22
Avec ton code :
char c = fgetc(fp);pourrait servir à capturer le premier caractère avant d'entrer dans la boucle telle qu'elle l'a écrite. Il est juste mal placé dans son code, puisqu'il ne faut lire dans le fichier qu'une fois qu'on l'a ouvert en lecture, bien évidemment.
Avec ton code :
- tu ne sais pas ce que vaut
c
avant d'entrer dans la boucle à moins de l'initialiser - si tu entres dans la boucle, mais que
fgetc()
échoue (ce qu'elle fera après le dernier caractère), tu affiches une valeur dec
qui vaut alors EOF
Phil_1857
Messages postés
1872
Date d'inscription
lundi 23 mars 2020
Statut
Membre
Dernière intervention
28 février 2024
168
22 mai 2020 à 17:33
22 mai 2020 à 17:33
Bonjour Dal,
C'est vrai que j'ai répondu " à la louche", en pointant les plus gros trucs
Evidemment il faut initialiser c avant, ca me paraissait évident
On arrange ça:
C'est vrai que j'ai répondu " à la louche", en pointant les plus gros trucs
Evidemment il faut initialiser c avant, ca me paraissait évident
On arrange ça:
while((c = fgetc(fp)) != EOF) printf("%c",c);
[Dal]
Messages postés
6194
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
11 octobre 2024
1 092
22 mai 2020 à 18:13
22 mai 2020 à 18:13
@Phil_1857,
Ta proposition de boucle est très efficace par sa concision :-). C'est un style de programmation qui est rendu possible par la flexibilité du C, qui permet de faire ces pirouettes avec une affectation contenue dans l'argument testé par le
@melodia22 ton code corrigé :
Dal
Ta proposition de boucle est très efficace par sa concision :-). C'est un style de programmation qui est rendu possible par la flexibilité du C, qui permet de faire ces pirouettes avec une affectation contenue dans l'argument testé par le
while()dont la valeur évaluée est testée avec un opérateur conditionnel. Ce n'est pas pas forcément le plus simple à comprendre pour melodia22 qui confond déjà l'opérateur de comparaison et d'affectation. Il ne manquait pas tant que cela pour corriger son code...
@melodia22 ton code corrigé :
#include <stdio.h> int main(void) { FILE *fp; char c; fp = fopen ("oui.txt", "r"); if (fp == NULL){ printf ("Erreur fopen\n"); return 1; } c = fgetc(fp); while (c != EOF){ printf("%c",c); c = fgetc(fp); } return 0; }
- la ligne 9 corrige l'opérateur de comparaison (erreur signalée par yg_be)
- la ligne 14 est correctement placée après l'ouverture en lecture du fichier et avoir vérifié que l'ouverture est réussie
Dal
melodia22
>
[Dal]
Messages postés
6194
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
11 octobre 2024
22 mai 2020 à 20:06
22 mai 2020 à 20:06
D’accord merci à tous pour vos réponses !!
À vrai dire j’ai suivi ce tutoriel : https://youtu.be/j1lHUmwnmA0 et je comprenais donc pas pourquoi ça ne marchait pas pour moi..
Je prends tout en note, et encore merci
À vrai dire j’ai suivi ce tutoriel : https://youtu.be/j1lHUmwnmA0 et je comprenais donc pas pourquoi ça ne marchait pas pour moi..
Je prends tout en note, et encore merci
Phil_1857
Messages postés
1872
Date d'inscription
lundi 23 mars 2020
Statut
Membre
Dernière intervention
28 février 2024
168
22 mai 2020 à 18:55
22 mai 2020 à 18:55
Oui, j'espère qu'elle apprécie tout ça à sa juste valeur …