Lire dans un fichier (C, débutant)
Sancta Terra
Messages postés
5
Statut
Membre
-
Sancta Terra Messages postés 5 Statut Membre -
Sancta Terra Messages postés 5 Statut Membre -
Bonjour.
Je suis en train d'essayer de réaliser un programme, mais j'ai un problème :
j'inscrit un nombre dans un fichier (en format int),
je remet le curseur au début du fichier avec fseek(fichier,0 , SEEK_SET);
puis j'essaye de lire le premier chiffre et de le stocker dans un int a avec a = fgetc(fichier);
et quand je fais un scanf("%d", &a); pour que la console affiche le chiffre, elle me répond toujours la même chose : 2293564
Quelqu'un aurait une solution?
Merci à ceux qui essayeront de résoudre mon petit problème!
Je suis en train d'essayer de réaliser un programme, mais j'ai un problème :
j'inscrit un nombre dans un fichier (en format int),
je remet le curseur au début du fichier avec fseek(fichier,0 , SEEK_SET);
puis j'essaye de lire le premier chiffre et de le stocker dans un int a avec a = fgetc(fichier);
et quand je fais un scanf("%d", &a); pour que la console affiche le chiffre, elle me répond toujours la même chose : 2293564
Quelqu'un aurait une solution?
Merci à ceux qui essayeront de résoudre mon petit problème!
A voir également:
- Lire dans un fichier (C, débutant)
- Lire le coran en français pdf - Télécharger - Histoire & Religion
- Lire un fichier epub - Guide
- Fichier bin - Guide
- Comment réduire la taille d'un fichier - Guide
- Fichier rar - Guide
4 réponses
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.
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,
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..."
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 ^^
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.
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,