A quoi sert stdin en C ?
dekl38
Messages postés
158
Date d'inscription
Statut
Membre
Dernière intervention
-
dekl38 Messages postés 158 Date d'inscription Statut Membre Dernière intervention -
dekl38 Messages postés 158 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Il y a un programe que je ne comprends pas, à quoi sert stdin ?
merci d'avance
Il y a un programe que je ne comprends pas, à quoi sert stdin ?
#include <stdio.h> int main (int argc, char *argv[]) { FILE *f; char c; if (argc < 2) f = stdin ; else f = fopen (argv[1], "r"); /* gérer le cas d'erreur... */ fscanf (f, «%c», &c) ; while (!feof(f)) { nombre = nombre + 1 ; fscanf(f, «%c», &c); } fprintf («Nombre de caractères : %d \n», nombre); return 0 ; }
merci d'avance
3 réponses
Salut,
C'est l'entrée standard.
Si il n'y a pas deux paramètres à l'appel de la fonction, alors, on considère le clavier comme source des entrées.
Si il y a deux paramètres (ou plus), on considère que le second paramètre est un fichier que l'on ouvre en lecture.
Ritchi
C'est l'entrée standard.
Si il n'y a pas deux paramètres à l'appel de la fonction, alors, on considère le clavier comme source des entrées.
Si il y a deux paramètres (ou plus), on considère que le second paramètre est un fichier que l'on ouvre en lecture.
Ritchi
stdin est le pointeur de type FILE* qui représente le flux d'entrée standard (c'est à dire le clavier en mode console simple ou un fichier en cas d'indirection).
Bonjour, merci beaucoup.
Donc ce programe prens des arguments, si il y en a au moins deux alors il créer un fichier contenant le deuxième argument. sinon il attend et créer in fichier avec l'entrée au clavier.
puis vient le :
c est le premier caractère de f .
compte le nombre de char avant la fin de f.
mais comment ?
Donc ce programe prens des arguments, si il y en a au moins deux alors il créer un fichier contenant le deuxième argument. sinon il attend et créer in fichier avec l'entrée au clavier.
puis vient le :
fscanf (f, «%c», &c)
c est le premier caractère de f .
while (!feof(f)) { nombre = nombre + 1 ; fscanf(f, «%c», &c); }
compte le nombre de char avant la fin de f.
mais comment ?
Donc ce programe prens des arguments, si il y en a au moins deux alors il créer un fichier contenant le deuxième argument. sinon il attend et créer in fichier avec l'entrée au clavier.
Non. S'il y a un paramètre ou plus (argv[0]), le programme ouvrira le fichier dont le nom correspond au premier paramètre. Il n'est pas question de création de fichier.
fscanf (f, «%c», &c)
Attention aux guillements utilisés. Il s'agit de " ".
compte le nombre de char avant la fin de f.
mais comment ?
Pas sûr d'avoir compris ta question. Le programme va tester si le pointeur est en fin de fichier (fichier au sens large). Sil n'est pas en fin de fichier, il incrémentera nombre et lira le caractère suivant. Ainsi en fin de fichier, tu connaîtras le nombre de caractères.
Sinon, attention à la mauvaise utilisation de feof. Ce n'est pas suffisant comme condition d'arrêt...
Cdlt,
Non. S'il y a un paramètre ou plus (argv[0]), le programme ouvrira le fichier dont le nom correspond au premier paramètre. Il n'est pas question de création de fichier.
fscanf (f, «%c», &c)
Attention aux guillements utilisés. Il s'agit de " ".
compte le nombre de char avant la fin de f.
mais comment ?
Pas sûr d'avoir compris ta question. Le programme va tester si le pointeur est en fin de fichier (fichier au sens large). Sil n'est pas en fin de fichier, il incrémentera nombre et lira le caractère suivant. Ainsi en fin de fichier, tu connaîtras le nombre de caractères.
Sinon, attention à la mauvaise utilisation de feof. Ce n'est pas suffisant comme condition d'arrêt...
Cdlt,
Je dirais plutôt : s'il n'y a pas de paramètre alors on considère...
Si il y a deux paramètres (ou plus), on considère que le second paramètre est un fichier que l'on ouvre en lecture.
Non, on prend le premier paramètre.