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 :

Variable contrariante :/


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 58
    Par défaut Variable contrariante :/
    Bonjour,
    Je débute, et je voudrais vous soumettre un problème :

    dans le bout de code ci dessous,
    "voici la valeur de la premiere variable : %d \n", a"
    M'affiche 0 comme valeur pour a, quelque soit la valeur entrée lors du scanf précédent.

    PS : Pareil pour la "double".

    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    #include <stdio.h>
    #include <stdlib.h>
     
    int main()
    {
    char a;
    short b;
    int c;
    float d;
    double e;
    a=0;
    b=0;
    c=0;
    d=0;
    e=0;
        printf("Veuillez entrer la valeur de la premiere variable :\n");
        scanf("%d", &a);
        printf("Veuillez entrer la valeur de la seconde variable : \n");
        scanf("%d", &b);
        printf("Veuillez entrer la valeur de la 3eme variable : \n");
        scanf("%d", &c);
        printf("Veuillez entrer la valeur de la 4eme variable : \n");
        scanf("%f", &d);
        printf("Veuillez entrer la valeur de la 5eme variable : \n");
        scanf("%f", &e);
        printf("voici la valeur de la premiere variable : %d \n", a);
        printf("Voici la valeur de la seconde variable : %d \n", b);
        printf("Voici la valeur de la 3eme variable : %d \n", c);
        printf("Voici la valeur de la 4eme variable : %.0f \n", d);
        printf("Voici la valeur de la 5eme variable : %.0f \n", e);
        return 0;
    }

  2. #2
    Membre très actif Avatar de elmcherqui
    Profil pro
    Inscrit en
    Février 2008
    Messages
    281
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Maroc

    Informations forums :
    Inscription : Février 2008
    Messages : 281
    Par défaut
    pour lire un char il faut le format %c dans scanf
    et le double %lf .
    meme chose pour printf

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 58
    Par défaut
    Problème résolu pour le double, mais pour char, je n'y arrive toujours pas.

    Qu'est-ce qui ne va pas là dedans ? :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    #include <stdio.h>
    #include <stdlib.h>
     
    int main()
    {
    char test;
    test=0;
        printf("Valeur de la variable test ?\n");
        scanf("%c", test);
        printf("Valeur de test : %c", test);
        return 0;
    }

  4. #4
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 967
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 967
    Par défaut
    Qai,
    Citation Envoyé par Qwerty111 Voir le message
    Problème résolu pour le double, mais pour char, je n'y arrive toujours pas.

    Qu'est-ce qui ne va pas là dedans ? :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    #include <stdio.h>
    #include <stdlib.h>
     
    int main()
    {
    char test;
    test=0;
        printf("Valeur de la variable test ?\n");
        scanf("%c", test);
        printf("Valeur de test : %c", test);
        return 0;
    }
    Pour lire un caractère, il faut passer son adresse.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 58
    Par défaut
    J'ai modifié, mais dois pas y avoir que ça, parce que ça marche toujours pas.
    Cette fois ci, ça plante plus, mais cela ne m'affiche pas la bonne valeurs en sortie.

  6. #6
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Par défaut
    Citation Envoyé par Qwerty111 Voir le message
    J'ai modifié, mais dois pas y avoir que ça, parce que ça marche toujours pas.
    Cette fois ci, ça plante plus, mais cela ne m'affiche pas la bonne valeurs en sortie.
    Et cela t'affiche quoi ?

    Juste, je rajouterai un retour chariot lors de l'affichage de la valeur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
        printf("Valeur de test : %c\n", test);
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  7. #7
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par Qwerty111 Voir le message
    Je débute, et je voudrais vous soumettre un problème :

    dans le bout de code ci dessous,
    "voici la valeur de la premiere variable : %d \n", a"
    M'affiche 0 comme valeur pour a, quelque soit la valeur entrée lors du scanf précédent.

    PS : Pareil pour la "double".
    Normal, les formateurs sont incohérents...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
     
    -------------- Build: Debug in hello ---------------
     
    [ 50.0%] Compiling: main.c
    [100.0%] Linking console executable: bin\Debug\hello.exe
    C:\dev\hello\main.c:5: warning: function declaration isn't a prototype
    C:\dev\hello\main.c: In function `main':
    C:\dev\hello\main.c:17: warning: int format, different type arg (arg 2)
    C:\dev\hello\main.c:19: warning: int format, different type arg (arg 2)
    C:\dev\hello\main.c:25: warning: float format, double arg (arg 2)
    Output size is 19.89 KB
    Process terminated with status 0 (0 minutes, 0 seconds)
    0 errors, 4 warnings

  8. #8
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Par défaut
    Citation Envoyé par Emmanuel Delahaye Voir le message
    Normal, les formateurs sont incohérents...
    Attention aux phrases à double sens
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 58
    Par défaut
    rien compris
    Le double sens oui, mais comment résoudre mon problème non

  10. #10
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par Qwerty111 Voir le message
    rien compris
    Le double sens oui, mais comment résoudre mon problème non
    Le compilateur indique que dans certains cas, le formateur ("%...") que tu as mis dans la chaine de formatage de scanf() et de printf() ne correspond pas au type du paramètre correspondant. Il faut apprendre à comprendre les messages du compilateurs. C'est très utile.

    Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
      char a;
     
       scanf ("%d", &a);
     
       printf ("voici la valeur de la premiere variable : %d \n", a);
    avec "%d", scanf() attend l'adresse d'un int et tu lui passes l'adresse d'un char. C'est incohérent. Le comportement est indéfini.

    Ensuite printf() avec "%d" va convertir la valeur passée en paramètre en int, puis l'afficher en base 10.
    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
    #include <stdio.h>
    #include <stdlib.h>
     
    int main (void)
    {
       char a;
       short b;
       int c;
       float d;
       double e;
       a = 0;
       b = 0;
       c = 0;
       d = 0;
       e = 0;
       printf ("Veuillez entrer la valeur de la premiere variable :\n");
       scanf ("%c", &a);
       printf ("Veuillez entrer la valeur de la seconde variable : \n");
       scanf ("%hd", &b);
       printf ("Veuillez entrer la valeur de la 3eme variable : \n");
       scanf ("%d", &c);
       printf ("Veuillez entrer la valeur de la 4eme variable : \n");
       scanf ("%f", &d);
       printf ("Veuillez entrer la valeur de la 5eme variable : \n");
       scanf ("%lf", &e);
       printf ("voici la valeur de la premiere variable : %d \n", a);
       printf ("Voici la valeur de la seconde variable : %d \n", b);
       printf ("Voici la valeur de la 3eme variable : %d \n", c);
       printf ("Voici la valeur de la 4eme variable : %.0f \n", d);
       printf ("Voici la valeur de la 5eme variable : %.0f \n", e);
       return 0;
    }
    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
    17
    18
    19
     
    Veuillez entrer la valeur de la premiere variable :
    a
    Veuillez entrer la valeur de la seconde variable :
    1
    Veuillez entrer la valeur de la 3eme variable :
    2
    Veuillez entrer la valeur de la 4eme variable :
    3
    Veuillez entrer la valeur de la 5eme variable :
    4
    voici la valeur de la premiere variable : 97
    Voici la valeur de la seconde variable : 1
    Voici la valeur de la 3eme variable : 2
    Voici la valeur de la 4eme variable : 3
    Voici la valeur de la 5eme variable : 4
     
    Process returned 0 (0x0)   execution time : 10.676 s
    Press any key to continue.

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 58
    Par défaut
    Merci
    Donc la leçon du jour, c'est avec les char, tu met %c

    [RESOLU]

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 18/07/2002, 13h32
  2. variables locales ou globales ???
    Par elvivo dans le forum C
    Réponses: 13
    Dernier message: 03/07/2002, 08h22
  3. Procédure avec un nombre variable d'arguments
    Par charly dans le forum Langage
    Réponses: 15
    Dernier message: 21/06/2002, 11h08
  4. Réponses: 4
    Dernier message: 05/06/2002, 14h35
  5. les variables globales static
    Par gRRosminet dans le forum C
    Réponses: 8
    Dernier message: 27/04/2002, 08h34

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