Fonction scanf
Fermé
faez
Messages postés
31
Date d'inscription
vendredi 25 juillet 2003
Statut
Membre
Dernière intervention
18 octobre 2005
-
28 nov. 2003 à 18:35
Bob - 2 déc. 2003 à 01:03
Bob - 2 déc. 2003 à 01:03
A voir également:
- Fonction scanf
- Scanf en java ✓ - Forum Java
- Fonction si et - Guide
- Fonction si avec date ✓ - Forum Excel
- Excel remplir une cellule en fonction d'une autre ✓ - Forum Excel
- Fonction find vba - Astuces et Solutions
6 réponses
teebo
Messages postés
33478
Date d'inscription
jeudi 14 octobre 2004
Statut
Modérateur
Dernière intervention
24 février 2011
1 795
28 nov. 2003 à 18:55
28 nov. 2003 à 18:55
Regarde sur le net, google est ton amis, sinon sur le site, c'est aussi explique dans le cours sur C!
. .
\_/
. .
\_/
Abusus non tollit usum
/* bout de code */
...
signed char chaine[32]; // tableau de 32 + 1 caracteres
scanf("%s", &chaine); // recupere le chaine tape au clavier pour l'ecrire dans le tableau
...
...
signed char chaine[32]; // tableau de 32 + 1 caracteres
scanf("%s", &chaine); // recupere le chaine tape au clavier pour l'ecrire dans le tableau
...
Salut Bob,
Juste quelques petites précisions concernant ta petite portion de code C : scanf("%s", &chaine);
1) le & devant chaine est inutile étant donné que chaine est un tableau de caractères et donc directement un pointeur en C. Le compilo risque de t'insulter à la compil (warning, voire erreur s'il est très susceptible).
2) scanf ne récupère pas la chaine tapée au clavier mais simplement l'ensemble des caractères saisis jusqu'au 1er caractère non "blanc" (espace, tabulation, ...). Par exemple, avec ton exemple, si tu saisis au clavier la chaine "toto tata titi", ta variable chaine ne contiendra que "toto" à l'arrivée. C'est une erreur que l'on fait très souvent , et qui est évitée par l'utilisation de la fonction gets.
A+
Juste quelques petites précisions concernant ta petite portion de code C : scanf("%s", &chaine);
1) le & devant chaine est inutile étant donné que chaine est un tableau de caractères et donc directement un pointeur en C. Le compilo risque de t'insulter à la compil (warning, voire erreur s'il est très susceptible).
2) scanf ne récupère pas la chaine tapée au clavier mais simplement l'ensemble des caractères saisis jusqu'au 1er caractère non "blanc" (espace, tabulation, ...). Par exemple, avec ton exemple, si tu saisis au clavier la chaine "toto tata titi", ta variable chaine ne contiendra que "toto" à l'arrivée. C'est une erreur que l'on fait très souvent , et qui est évitée par l'utilisation de la fonction gets.
A+
signed char *ptr;
signed char chaine[8];
ptr = &chaine;
scanf("%[A]", ptr );
Dans la théorie scanf attend un pointeur soit une adresse d'où le &chaine puis si tu veux accepter les espaces voir même le retour de chariot ce qui serait presque stupide pour terminer sa chaine on peut utiliser les [X] pour définir les caractères utilisables et [^X] pour ceux assimilé à une terminaison de chaine. J'espère t'avoir un peu plus éclairé sur les mystères du scanf.
signed char chaine[8];
ptr = &chaine;
scanf("%[A]", ptr );
Dans la théorie scanf attend un pointeur soit une adresse d'où le &chaine puis si tu veux accepter les espaces voir même le retour de chariot ce qui serait presque stupide pour terminer sa chaine on peut utiliser les [X] pour définir les caractères utilisables et [^X] pour ceux assimilé à une terminaison de chaine. J'espère t'avoir un peu plus éclairé sur les mystères du scanf.
tafiscobar
Messages postés
1277
Date d'inscription
jeudi 7 décembre 2000
Statut
Contributeur
Dernière intervention
26 février 2009
177
28 nov. 2003 à 22:39
28 nov. 2003 à 22:39
mais pourquoi ils ne lisent pas la charte du forum? regardez au moins les anciens posts, ahe
tafiscobar
tafiscobar
bonjour
la fonction scan f pour moi est simple
premier argument de la fonction> indicateur de formatage, deuxième argument, destination de la lecture lue au clavier par l'operateur d'adresse " & ".
Voila
cependant, il est juste de souligner que le nom d'un tableau est directement un pointeur sur son 1 er element, donc, il ne faut surtout pas indiquer cet operateur sur le nom, car source d'erreur à la compilation ( 2 ème phase de construction d'un .exe..)
j'espere avoir contribuer à un peu d'eclaircissement
cordialement
abdel
la fonction scan f pour moi est simple
premier argument de la fonction> indicateur de formatage, deuxième argument, destination de la lecture lue au clavier par l'operateur d'adresse " & ".
Voila
cependant, il est juste de souligner que le nom d'un tableau est directement un pointeur sur son 1 er element, donc, il ne faut surtout pas indiquer cet operateur sur le nom, car source d'erreur à la compilation ( 2 ème phase de construction d'un .exe..)
j'espere avoir contribuer à un peu d'eclaircissement
cordialement
abdel
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
ya un truc ossi comme ca :
scanf("%^['Chars a detecter']", ....);
pour arreter jusqua 'Char a detecter'
ex:
scanf("%^[Efg]", a); lit la chaine a jusqua ce q'il y ai 'E' et ENTER ou 'f' et ENTER ou 'g' et ENTER
remarque :
mé c plus facile de fait un bou de programme que de se rappeler de ca :-D
scanf("%^['Chars a detecter']", ....);
pour arreter jusqua 'Char a detecter'
ex:
scanf("%^[Efg]", a); lit la chaine a jusqua ce q'il y ai 'E' et ENTER ou 'f' et ENTER ou 'g' et ENTER
remarque :
mé c plus facile de fait un bou de programme que de se rappeler de ca :-D