pb de sscanf _programmation C_
Répondre à la discussion
Affichage des résultats 1 à 3 sur 3

pb de sscanf _programmation C_



  1. #1
    invitecb2428ec

    pb de sscanf _programmation C_


    ------

    Salut, SVP aider moi: La fonction sscanf me rendra un fou . Voyant ce programme:
    Code:
    #include<stdio.h>
    main()
    { long double x;
      clrscr();
      sscanf("g", "%Lf");
      printf("aucun erreur");
      getch();
      sscanf("", "", $x);
      getch();
      return 0;
    }
    La problème est ce qu'il n'y a aucun erreur lors de l'exécution de ce programme pourtant qu'en se débarrassant de la deuxième sscanf la première cause un erreur et le message "aucun erreur" n'est pas affiché:
    Code:
    #include<stdio.h>
    main()
    { long double x;
      clrscr();
      sscanf("g", "%Lf");
      getch();
      //sscanf("", "", $x);
      getch();
      return 0;
    }

    -----

  2. #2
    gienas
    Modérateur

    Re : pb de sscanf _programmation C_

    Bonjour lahmed et tout le groupe

    Citation Envoyé par lahmed Voir le message
    ... La fonction sscanf me rendra un fou ...
    Tu ne seras pas le premier.

    La fonction sscanf nécessite un pointeur sur un char (ton p), dont on ne sait rien, en particulier quelle est sa valeur, au moment de l'exécution.

    Peux-tu préciser comment et où tu initialises ce pointeur p?

    En faisant tout "dans les règles", il se peut que le problème disparaisse.

  3. #3
    polo974

    Re : pb de sscanf _programmation C_

    Ce serait bien de dire où tu veux ranger ton double.
    Et puis chercher un double dans une chaine ne contenant que g, c'est un peu optimiste.

    normalement, il faudrait un truc genre:
    char blabla="0.123"; // ou bien toute autre façon de remplir la chaine de caractère source
    double x;
    sscanf (blabla, "%Lf", &x);

    on passe le pointeur du double (ou autre type suivant besoin) avec un & devant sinon sscanf (comme scanf et fscanf) ne savent pas où ranger la donnée lue.
    Si on lui passe la valeur (le x sans le & devant), ça va mal se passer (tôt ou tard).

    bref, en gros, il faut autant de pointeurs de variables que de % dans la chaine de formatage (j'ai dis en gros, gare aux \%...).

    Se rappeler: printf =>donner la variable, scanf => donner le pointeur de la variable
    (ce qui ne facilite pas les copié collé genr je fais un scanf et j'affiche pour voir avec un printf...).

    Enfin , $x est une erreur de frappe qu'on va mettre sur le dos du secrétariat....

Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...