A quoi sert stdin en C ? [Fermé]

Signaler
Messages postés
158
Date d'inscription
mardi 6 octobre 2009
Statut
Membre
Dernière intervention
6 avril 2016
-
Messages postés
158
Date d'inscription
mardi 6 octobre 2009
Statut
Membre
Dernière intervention
6 avril 2016
-
Bonjour,

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

Messages postés
20141
Date d'inscription
samedi 17 mars 2007
Statut
Contributeur
Dernière intervention
26 février 2021
5 420
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
4
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 65492 internautes nous ont dit merci ce mois-ci

Messages postés
11066
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
18 octobre 2016
1 741
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.
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.
Messages postés
9688
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
2 octobre 2020
1 263
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).
Messages postés
158
Date d'inscription
mardi 6 octobre 2009
Statut
Membre
Dernière intervention
6 avril 2016
11
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 :
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 ?
Messages postés
11066
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
18 octobre 2016
1 741
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,
Messages postés
158
Date d'inscription
mardi 6 octobre 2009
Statut
Membre
Dernière intervention
6 avril 2016
11
pourquoi feof n'est pas suffisant comme condition d'arrêt ?