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   -
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

_Ritchi_ Messages postés 21335 Date d'inscription   Statut Contributeur Dernière intervention   6 104
 
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
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
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.
0
Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
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).
2
dekl38 Messages postés 158 Date d'inscription   Statut Membre Dernière intervention   12
 
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 ?
1
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
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,
0
dekl38 Messages postés 158 Date d'inscription   Statut Membre Dernière intervention   12
 
pourquoi feof n'est pas suffisant comme condition d'arrêt ?
0