Lire dans un fichier en C
momoadmo
Messages postés
6
Date d'inscription
Statut
Membre
Dernière intervention
-
[Dal] Messages postés 6205 Date d'inscription Statut Contributeur Dernière intervention -
[Dal] Messages postés 6205 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
j'aimerai savoir comment je doit procéder afin de pouvoir créer une fonction qui lit dans un fichier, or le nom de fichier est contenu dans une variable qui varie bien évidement selon les besoins ,Merci d'avance. :)
lorsque je remplace le x par un nom de fichier le programme marche mais lorsque je veut que ce soit une variable il bloque.
j'aimerai savoir comment je doit procéder afin de pouvoir créer une fonction qui lit dans un fichier, or le nom de fichier est contenu dans une variable qui varie bien évidement selon les besoins ,Merci d'avance. :)
lorsque je remplace le x par un nom de fichier le programme marche mais lorsque je veut que ce soit une variable il bloque.
int main()
{
char* x;
printf("Entrez x:");
scanf("s",x);
FILE* fichier = NULL;
int caractereActuel = 0;
fichier = fopen(x, "r");
if (fichier != NULL)
{
do
{
caractereActuel = fgetc(fichier);
printf("%c", caractereActuel);
} while (caractereActuel != EOF);
fclose(fichier);
return 0;
}
}
A voir également:
- Lire dans un fichier en C
- 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
1 réponse
Salut,
Bon déjà tu as codé comme un (GROS)cochon, un petit effort de ce côté là ferait vraiment pas de mal.
Ensuite je ne vois pas dans ton code où est ce que tu essaie d'ouvrir un fichier avec une "variable"?
Ensuite ça : -> scanf("s",x); c'est weird.
-> scanf("%s",x); ça me semble déjà plus conforme
De plus tu as oublié une accolade pour ton if.
Bon déjà tu as codé comme un (GROS)cochon, un petit effort de ce côté là ferait vraiment pas de mal.
Ensuite je ne vois pas dans ton code où est ce que tu essaie d'ouvrir un fichier avec une "variable"?
Ensuite ça : -> scanf("s",x); c'est weird.
-> scanf("%s",x); ça me semble déjà plus conforme
De plus tu as oublié une accolade pour ton if.
si on n'alloue pas de mémoire pour le pointeur , il ne va rien arriver de bon quand tentera d'y mettre quelque chose ;-) ... c'est même certainement l’origine de l'erreur expérimentée par momoadmo.
l'inclusion de n'est pas nécessaire, pareil pour .
en C, le prototype correct de main sans arguments est
sur le forum, la balise de code correcte pour la coloration syntaxique du C est :
<code c>
code ici
</code>
Dal
Bon après pour le int main (void) c'est un peu le cadet de ses soucis ahah, mais tu as raison.
Autant pour moi pour le %s je pensais que ça venait de string.h, je l'inclus toujours quand j'utilise des string, j'avoue que je ne m'étais jamais posé la question !
Malheureusement je ne peux pas éditer mon code ...
YCN-
pour faire un code plus robuste, Il serait bien, aussi, de s'assurer que la saisie ne dépasse pas cette limite, faire quelque chose si c'est le cas, et purger le flux stdin.
Par exemple avec scanf et un spécificateur de taille
tu dois inclure quand ton code a besoin d'appeler une fonction dont le prototype est déclaré dans (par exemple )
http://www.cplusplus.com/reference/cstring/
ou le type ou la macro , qui sont aussi définis dans cet entête.
Dal