Fonction scanf

faez Messages postés 31 Statut Membre -  
 Bob -
bonjour , je voudrais savoir ce que fait la fonction scanf en c . merci bcp
A voir également:

6 réponses

teebo Messages postés 33570 Date d'inscription   Statut Modérateur Dernière intervention   1 793
 
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
0
Bob
 
/* 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
...
0
c-man
 
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+
0
Bob > c-man
 
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.
0
tafiscobar Messages postés 1281 Statut Contributeur 177
 
mais pourquoi ils ne lisent pas la charte du forum? regardez au moins les anciens posts, ahe

tafiscobar
0
abdelhak
 
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
gg le noob en c
 
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
0
Bob
 
C'est ce que j'ai dit précédemment:
fscanf("%[^A, B, C]", ptr) // A, B, C considérés comme terminaison de chaine
fscanf("%[A, B, C]", ptr) // A, B, C accepté et tout le reste termine la chaine
0