Lire dans un fichier (C, débutant)
Fermé
Sancta Terra
Messages postés
5
Date d'inscription
mardi 20 avril 2010
Statut
Membre
Dernière intervention
21 avril 2010
-
20 avril 2010 à 12:30
Sancta Terra Messages postés 5 Date d'inscription mardi 20 avril 2010 Statut Membre Dernière intervention 21 avril 2010 - 21 avril 2010 à 21:56
Sancta Terra Messages postés 5 Date d'inscription mardi 20 avril 2010 Statut Membre Dernière intervention 21 avril 2010 - 21 avril 2010 à 21:56
A voir également:
- Lire dans un fichier (C, débutant)
- Lire le coran en français pdf - Télécharger - Histoire & Religion
- Lire fichier epub - Guide
- Fichier rar - Guide
- Lire fichier bin - Guide
- Comment réduire la taille d'un fichier - Guide
4 réponses
Neliel
Messages postés
6146
Date d'inscription
jeudi 9 juillet 2009
Statut
Contributeur
Dernière intervention
20 mars 2017
1 691
20 avril 2010 à 12:33
20 avril 2010 à 12:33
Bonjour,
Essaie avec des caractères d'abord!
Remplace:
int a;
par :
char a;
puis fait : scanf("%d", &a) pour le convertir en chiffre et l'afficher.
la fonction fgetc renvoie un caractère et non un entier.
Essaie avec des caractères d'abord!
Remplace:
int a;
par :
char a;
puis fait : scanf("%d", &a) pour le convertir en chiffre et l'afficher.
la fonction fgetc renvoie un caractère et non un entier.
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 842
20 avril 2010 à 12:51
20 avril 2010 à 12:51
Bonjour,
et quand je fais un scanf("%d", &a); pour que la console affiche le chiffre
printf("%d", a); tu veux dire ? Car scanf ce n'est pas pour afficher.
De plus a=fgetc(fichier) ne te donnera pas le nombre mais le code ASCII du premier caractère.
Donc tu ne pourras pas lire le nombre 23 par exemple, mais juste le code ASCII du nombre 2.
Pour lire un nombre : fscanf(fichier,"%d",&a);
Pour afficher le nombre : printf("%d",a);
Cdlt,
et quand je fais un scanf("%d", &a); pour que la console affiche le chiffre
printf("%d", a); tu veux dire ? Car scanf ce n'est pas pour afficher.
De plus a=fgetc(fichier) ne te donnera pas le nombre mais le code ASCII du premier caractère.
Donc tu ne pourras pas lire le nombre 23 par exemple, mais juste le code ASCII du nombre 2.
Pour lire un nombre : fscanf(fichier,"%d",&a);
Pour afficher le nombre : printf("%d",a);
Cdlt,
Neliel
Messages postés
6146
Date d'inscription
jeudi 9 juillet 2009
Statut
Contributeur
Dernière intervention
20 mars 2017
1 691
Modifié par Neliel le 20/04/2010 à 12:59
Modifié par Neliel le 20/04/2010 à 12:59
Zut, j'ai fait un copier coller sans réfléchir... abruti que je suis... je voulais dire:
printf("%d",a);
Pour fgetc, effectivement, elle renvoie un entier... bizarre.
"Trotti Trotta, Monsieur P, y'a des anges qui veulent un bisou..."
printf("%d",a);
Pour fgetc, effectivement, elle renvoie un entier... bizarre.
"Trotti Trotta, Monsieur P, y'a des anges qui veulent un bisou..."
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 842
20 avril 2010 à 13:58
20 avril 2010 à 13:58
Non il n'y a rien de bizarre à ce que fgetc renvoie un int et non un char.
C'est pour des raisons techniques.
N'hésite pas si tu veux que je détaille ce point.
C'est pour des raisons techniques.
N'hésite pas si tu veux que je détaille ce point.
Neliel
Messages postés
6146
Date d'inscription
jeudi 9 juillet 2009
Statut
Contributeur
Dernière intervention
20 mars 2017
1 691
20 avril 2010 à 14:00
20 avril 2010 à 14:00
Ce n'est pas moi l'auteur du sujet mais merci quand même...
Sancta Terra
Messages postés
5
Date d'inscription
mardi 20 avril 2010
Statut
Membre
Dernière intervention
21 avril 2010
20 avril 2010 à 14:16
20 avril 2010 à 14:16
C'est moi l'auteur, mais on s'en fiche un peu ^^
En fait à l'origine je voudrai lire chiffre par chiffre un nombre, j'avais donc pensé à le mettre dans un fichier pour pouvoir extraire chaque chiffre et les utiliser après (les élever à une puissance par exemple).
Je vais essayer de bidouiller mon programme avec vos remarques ^^
En fait à l'origine je voudrai lire chiffre par chiffre un nombre, j'avais donc pensé à le mettre dans un fichier pour pouvoir extraire chaque chiffre et les utiliser après (les élever à une puissance par exemple).
Je vais essayer de bidouiller mon programme avec vos remarques ^^
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 842
20 avril 2010 à 15:18
20 avril 2010 à 15:18
Pourquoi passer par un fichier alors qu'un simple while suffit ?
Tu peux récupérer les chiffres en jouant avec le modulo 10 et la division par 10.
Si jamais tu avais vraiment besoin de passer par un fichier, utilise plutôt les fonctions comme sscanf. Tu pourras traiter la chaîne sans nécessiter de fichier.
Tu peux récupérer les chiffres en jouant avec le modulo 10 et la division par 10.
Si jamais tu avais vraiment besoin de passer par un fichier, utilise plutôt les fonctions comme sscanf. Tu pourras traiter la chaîne sans nécessiter de fichier.
Sancta Terra
Messages postés
5
Date d'inscription
mardi 20 avril 2010
Statut
Membre
Dernière intervention
21 avril 2010
20 avril 2010 à 15:39
20 avril 2010 à 15:39
Je vois pas trop comment on pourrai faire ça juste avec les modulo et divisions...
Par exemple avec le nombre 1000 je voudrai récupérer 1 et 0 et 0 et 0 puis 10 et 00.
Par exemple avec le nombre 1000 je voudrai récupérer 1 et 0 et 0 et 0 puis 10 et 00.
Neliel
Messages postés
6146
Date d'inscription
jeudi 9 juillet 2009
Statut
Contributeur
Dernière intervention
20 mars 2017
1 691
20 avril 2010 à 15:43
20 avril 2010 à 15:43
Ben si...
Avec 1234 par exemple, tu divise par mille, tu obtient 1,234 puis tu récupère la partie entière que tu stocke dans la variable a par exemple.
Pour récupérer 2, tu fais 1234/100, tu obtient 12,34, tu récupère la partie entière soit 12 puis tu fais 12 - a*10 et tu aura 2
....
Avec 1234 par exemple, tu divise par mille, tu obtient 1,234 puis tu récupère la partie entière que tu stocke dans la variable a par exemple.
Pour récupérer 2, tu fais 1234/100, tu obtient 12,34, tu récupère la partie entière soit 12 puis tu fais 12 - a*10 et tu aura 2
....
Sancta Terra
Messages postés
5
Date d'inscription
mardi 20 avril 2010
Statut
Membre
Dernière intervention
21 avril 2010
20 avril 2010 à 15:55
20 avril 2010 à 15:55
Ouai... Ca va faire des belles boucles tout ça au final, va pas falloir s'emeler les pinceaux ^^
Sancta Terra
Messages postés
5
Date d'inscription
mardi 20 avril 2010
Statut
Membre
Dernière intervention
21 avril 2010
21 avril 2010 à 21:56
21 avril 2010 à 21:56
Hey, j'ai essayé ta technique, à part une erreur de compiilation que je galère à comprendre ça marche et ça m'aide même pour la suite de l'exo ! ;)
Merci beaucoup, et merci à tout ceux qui s'y sont penchés!
A une prochaine peut être !
Merci beaucoup, et merci à tout ceux qui s'y sont penchés!
A une prochaine peut être !
20 avril 2010 à 12:55
Cela ne convertit pas le chiffre. Cette instruction demande à l'utilisateur d'entrer un nombre au clavier.
la fonction fgetc renvoie un caractère et non un entier.
Si justement, fgetc renvoie un entier. La fonction lit en unsigned char et renvoie le caractère en int. Donc, il faut bien mettre int caractere=fgetc(fichier);
Cdlt,