IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

printf et scanf


Sujet :

C++

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre tr�s actif
    Homme Profil pro
    Etudiant en g�nie m�canique
    Inscrit en
    Mars 2011
    Messages
    146
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activit� : Etudiant en g�nie m�canique

    Informations forums :
    Inscription : Mars 2011
    Messages : 146
    Par d�faut printf et scanf
    Salut les copains!

    Je suis en train de lire pas mal de tutoriels sur le C++ et j'essaie de cr�er de petites applications simples pour v�rifier que j'ai bien tout compris.
    Apparemment j'ai pas tout compris... ^^

    J'ai voulu �crire un programme qui demande � l'utilisateur d'�crire quelque chose, qui lise ce que l'utilisateur a �crit, et puis qui dise "vous avez �crit XXX".

    Voici mon code en l'�tat actuel:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    #include <iostream> // c'était là quand j'ai créé le projet, j'ai pas touché
    #include<stdio.h>
     
    using namespace std; // c'était là quand j'ai créé le projet, j'ai pas touché
     
    int main() // c'était là quand j'ai créé le projet, j'ai pas touché
    {
        char a[100]; // je définis une chaîne de 100 caractères sans l'initialiser
     
        printf("Ecrivez quelque chose s'il-vous-plait...\n"); // consigne à l'utilisateur
        scanf("%[100]s", a); // lecture de la réponse de l'utilisateur
        printf("Vous avec ecrit : %a[100]"); // répéter la réponse de l'utilisateur
    }
    La compilation ne renvoie pas d'erreur, mais l'avertissement suivant, que je ne sais pas encore interpr�ter:

    Warning: unknown conversion type character 'a' in format

    � l'ex�cution, le programme produit le r�sultat suivant:
    Ecrivez quelque chose s'il-vous-plait...
    a (�a c'est ce que j'ai �crit)
    Vous avec ecrit : -0x1.9bf0b0p+808[100]
    Process returned 0 <0x0> execution time : 2.794 s
    Press any key to continue.

    Voil�. D'apr�s mes connaissances actuelles, j'aurais tendance � dire que le "a" que j'ai �crit a �t� mal interpr�t� (disons interpr�t� "dans une autre langue"), ou qu'il n'a pas �t� renvoy� comme je m'y attendais. Le contenu renvoy� a un peu l'air d'une adresse, ou d'un truc du genre...

    Merci de m'expliquer ce qui n'allait pas.

  2. #2
    R�dacteur/Mod�rateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 153
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 38
    Localisation : Canada

    Informations professionnelles :
    Activit� : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 153
    Billets dans le blog
    4
    Par d�faut
    Bonjour,

    si tu es en C++ oublie imm�diatement les scanf et printf qui sont du C et passe � du std::cout et std::cin.

    Sinon, les crochets dans le formatage, tu as vu �a o� ? Jamais entendu parler pour ma part. Pour limiter � 100 caract�res, on fera %100s
    Et printf ne s'utilise pas comme �a pour formater une variable.
    Pensez � consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation r�seau ?
    Aucune aide via MP ne sera dispens�e. Merci d'utiliser les forums pr�vus � cet effet.

  3. #3
    Membre tr�s actif
    Homme Profil pro
    Etudiant en g�nie m�canique
    Inscrit en
    Mars 2011
    Messages
    146
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activit� : Etudiant en g�nie m�canique

    Informations forums :
    Inscription : Mars 2011
    Messages : 146
    Par d�faut
    Ok... ^^
    Je reviens apr�s avoir recommenc� en vrai C++ =D

  4. #4
    Membre Expert
    Homme Profil pro
    �tudiant
    Inscrit en
    Juin 2012
    Messages
    1 711
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activit� : �tudiant

    Informations forums :
    Inscription : Juin 2012
    Messages : 1 711
    Par d�faut
    Hello,

    Utilise aussi des string au lieu de ton tableau de char (la aussi, c'est la fa�on de faire en C, pas en C++)

    doc ici

  5. #5
    Membre tr�s actif
    Homme Profil pro
    Etudiant en g�nie m�canique
    Inscrit en
    Mars 2011
    Messages
    146
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activit� : Etudiant en g�nie m�canique

    Informations forums :
    Inscription : Mars 2011
    Messages : 146
    Par d�faut
    Salut, merci!
    Les strings j'ai un peu essay�, mais �a marchait pas trop. Bon, en m�me temps c'est peut-�tre les printf scanf qui faisaient merder mon programme...

    Je reviens si j'ai de nouveaux probl�mes =D

  6. #6
    Membre tr�s actif
    Homme Profil pro
    Etudiant en g�nie m�canique
    Inscrit en
    Mars 2011
    Messages
    146
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activit� : Etudiant en g�nie m�canique

    Informations forums :
    Inscription : Mars 2011
    Messages : 146
    Par d�faut
    Ah ben �a aura pas �t� long! ^^

    Je voudrais �crire un truc du genre:

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    // déclaration
    string reponse;
     
    if (reponse=="oui") // ici j'ai une erreur
    {
    blablabla
    }
    else if (reponse=="non") // ici j'ai une erreur
    {
    blablabla
    }
    else
    {
    blablabla
    }
    Au niveau des erreurs, on me signale que la norme ISO C++ interdit la comparaison entre un pointeur et un entier. Je ne vois pas trop le rapport avec ce que j'ai �crit.
    Quelqu'un sait-il pourquoi j'ai ce genre de probl�me?

  7. #7
    Inactif  


    Homme Profil pro
    Doctorant s�curit� informatique � Dipl�m� master Droit/�conomie/Gestion
    Inscrit en
    D�cembre 2011
    Messages
    9 026
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 32
    Localisation : France, Loire (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : Doctorant s�curit� informatique � Dipl�m� master Droit/�conomie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : D�cembre 2011
    Messages : 9 026
    Par d�faut
    Citation Envoy� par Bousk Voir le message
    Sinon, les crochets dans le formatage, tu as vu �a o� ? Jamais entendu parler pour ma part.
    Printf et scanf acceptent des expression r�guli�re il me semble :
    "%10[abc]" = 10 caract�res a, b ou c
    "%[^\n]" = lire jusqu'au premier retour � la ligne.

    @Armulis :
    Essaye avec :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    #include <string>
     
    std::string reponse;
     
    if(reponse == "non");

  8. #8
    Membre tr�s actif
    Homme Profil pro
    Etudiant en g�nie m�canique
    Inscrit en
    Mars 2011
    Messages
    146
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activit� : Etudiant en g�nie m�canique

    Informations forums :
    Inscription : Mars 2011
    Messages : 146
    Par d�faut
    Merci Neckara, mais "#include <string>" et "using namespace std;" sont d�j� au d�but de mon programme.

  9. #9
    Membre tr�s actif
    Homme Profil pro
    Etudiant en g�nie m�canique
    Inscrit en
    Mars 2011
    Messages
    146
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activit� : Etudiant en g�nie m�canique

    Informations forums :
    Inscription : Mars 2011
    Messages : 146
    Par d�faut
    C'est tout bon j'ai trouv�!

    Maintenant je cherche comment faire une petite temporisation (pour que le programme ne balance pas toujours tout ce qu'il a � dire en un instant sur la console.

  10. #10
    Membre tr�s actif
    Homme Profil pro
    root
    Inscrit en
    Janvier 2013
    Messages
    174
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activit� : root

    Informations forums :
    Inscription : Janvier 2013
    Messages : 174
    Par d�faut
    #include <unistd.h>
    sleep(10);

  11. #11
    R�dacteur/Mod�rateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 153
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 38
    Localisation : Canada

    Informations professionnelles :
    Activit� : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 153
    Billets dans le blog
    4
    Par d�faut
    Citation Envoy� par Neckara Voir le message
    Printf et scanf acceptent des expression r�guli�re il me semble :
    "%10[abc]" = 10 caract�res a, b ou c
    "%[^\n]" = lire jusqu'au premier retour � la ligne.
    Ca a effectivement l'air d'�tre le cas pour le scanf, mais pas pour le printf.
    Pensez � consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation r�seau ?
    Aucune aide via MP ne sera dispens�e. Merci d'utiliser les forums pr�vus � cet effet.

  12. #12
    Membre tr�s actif
    Homme Profil pro
    Etudiant en g�nie m�canique
    Inscrit en
    Mars 2011
    Messages
    146
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activit� : Etudiant en g�nie m�canique

    Informations forums :
    Inscription : Mars 2011
    Messages : 146
    Par d�faut
    Merci Kripteks.
    Je demande juste un truc, puisque j'ai �t� averti � ce propos: sleep ne risque pas de surcharger mon processeur, si?
    Et la valeur � introduire correspond-elle � des millisecondes?

  13. #13
    Membre Expert Avatar de Ehonn
    Homme Profil pro
    �tudiant
    Inscrit en
    F�vrier 2012
    Messages
    788
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 35
    Localisation : France

    Informations professionnelles :
    Activit� : �tudiant
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : F�vrier 2012
    Messages : 788
    Par d�faut
    sleep venant de unistd.h fait une attente passive du nombre de secondes donn�.
    (En C++11 on peut utiliser la solution (standard) de #include <chrono> avec std::this_thread::sleep_for(std::chrono::seconds(s)); ou std::this_thread::sleep_for(std::chrono::milliseconds(ms)); par exemple.)

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. R�ponses: 4
    Dernier message: 28/05/2010, 10h41
  2. printf et scanf en Assembleur
    Par Master C dans le forum Assembleur
    R�ponses: 4
    Dernier message: 28/06/2008, 20h36
  3. Les sp�cificateurs de format de printf et scanf
    Par Mokette dans le forum Biblioth�que standard
    R�ponses: 5
    Dernier message: 11/01/2008, 15h58
  4. red�finition de printf() et scanf()
    Par tut dans le forum C++
    R�ponses: 3
    Dernier message: 06/09/2005, 17h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo