Fonction scanf

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

6 réponses

  1. teebo Messages postés 33585 Date d'inscription   Statut Contributeur Dernière intervention   1 797
     
    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
  2. 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
    1. 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
      1. 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
  3. 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
  4. 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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. 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
  7. 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