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 :

Avertissement sur le format de printf %c expects argument of type 'int'


Sujet :

C

  1. #1
    Membre confirmé
    Homme Profil pro
    Ingénieur/Chercheur
    Inscrit en
    Novembre 2007
    Messages
    123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur/Chercheur

    Informations forums :
    Inscription : Novembre 2007
    Messages : 123
    Par défaut Avertissement sur le format de printf %c expects argument of type 'int'
    Bonjour,
    j'ai un problème pour utiliser une fonction qui récupère un caractère tapé au clavier.
    Je vous donne mon code :
    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
    #include <stdio.h>
    #include <stdlib.h>
     
    char lireCaractere();
     
    char lireCaractere()
    {
        char caractere = 0;
        caractere = getchar();
        return caractere;
    }
     
    int main(int argc, char *argv[])
    {
    	printf("Caractère : %c",lireCaractere);
     
        return 0;
    }
    et voila l'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    main.c: In function ‘main’:
    main.c:15:2: attention : format ‘%c’ expects argument of type ‘int’, but argument 2 has type ‘char (*)()[-Wformat]
    Si vous voulez bien m'expliquer..?.

  2. #2
    Membre chevronné
    Femme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2009
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2009
    Messages : 236
    Par défaut
    Hello,

    Et avec:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    printf("Caractère : %c",lireCaractere());
    ca te donne quoi?

    Edit:
    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
     
    #include <stdio.h>
    #include <stdlib.h>
     
    char lireCaractere();
     
    char lireCaractere()
    {
        char caractere = '';
        caractere = getchar();
        return caractere;
    }
     
    int main(int argc, char *argv[])
    {
    	printf("Caractère : %c",lireCaractere());
     
        return 0;
    }
    D'ailleurs que fait getchar()??

  3. #3
    Expert éminent

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par défaut
    Il te dit qu'il espère un "int", mais que tu lui donne un "char (*)()" c'est à dire un "pointeur de fonction retournant un char"

    En effet, lireCaractere est le nom d'une fonction, c'est à dire un pointeur vers son code.

  4. #4
    Membre confirmé
    Homme Profil pro
    Ingénieur/Chercheur
    Inscrit en
    Novembre 2007
    Messages
    123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur/Chercheur

    Informations forums :
    Inscription : Novembre 2007
    Messages : 123
    Par défaut
    Et alors comment je fais pour avoir le résultat de la fonction plutôt qu'un pointeur ?

  5. #5
    Membre chevronné
    Femme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2009
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2009
    Messages : 236
    Par défaut
    Hello,

    As tu essayé le code que je t'ai fourni?

  6. #6
    Membre Expert
    Avatar de imperio
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    868
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

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

    Informations forums :
    Inscription : Mai 2010
    Messages : 868
    Par défaut
    Citation Envoyé par binome-x Voir le message
    Et alors comment je fais pour avoir le résultat de la fonction plutôt qu'un pointeur ?
    Malinaka te l'a montré dans son post.

    Citation Envoyé par Malinaka
    D'ailleurs que fait getchar()??
    C'était un troll ou une vraie question ? Je vais plutôt penser à la seconde. Quoi de mieux que le man pour le savoir ?

  7. #7
    Membre chevronné
    Femme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2009
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2009
    Messages : 236
    Par défaut
    Citation Envoyé par imperio Voir le message
    C'était un troll ou une vraie question ? Je vais plutôt penser à la seconde. Quoi de mieux que le man pour le savoir ?
    Effectivement je ne connaissait pas (je connaissait scanf et getc, mais pas celui la), pour expliquer ma question, je pensais à une fonction home made

  8. #8
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    Bin comme on te l'as déjà montré plus haut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    printf("Caractère : %c",lireCaractere () );
    Ta fonction d'ailleurs je la verrais plutôt comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    char lireCaractere (void)
    {
        return  getchar();
    }
    Ça ne change rien mais autant raccourcir code quand on peut
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  9. #9
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2009
    Messages
    4 492
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 492
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Malinaka Voir le message
    Effectivement je ne connaissait pas (je connaissait scanf et getc, mais pas celui la), pour expliquer ma question, je pensais à une fonction home made
    Dans son code, tu pouvais voir qu'il n'y avait que des en-têtes standards et aucun prototype écrit manuellement. Tu pouvais donc te douter que cette fonction était une fonction standard. N'hésite jamais à lire chercher le nom d'une fonction que tu ne connais pas dans les pages de manuel

  10. #10
    Membre confirmé
    Homme Profil pro
    Ingénieur/Chercheur
    Inscrit en
    Novembre 2007
    Messages
    123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur/Chercheur

    Informations forums :
    Inscription : Novembre 2007
    Messages : 123
    Par défaut
    Pardon, je n'avais pas vu l'ajout des parenthèses, je croyais que c'était pareil.
    Mea culpa.

  11. #11
    Membre expérimenté Avatar de moins1
    Homme Profil pro
    Autre
    Inscrit en
    Février 2013
    Messages
    85
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Autre
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2013
    Messages : 85
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    char lireCaractere (void)
    {
        return  getchar();
    }
    Ça donne pas grand chose faire ça, aussi bien utiliser getchar() tout court. Sinon ça occulte le fait que la fonction getchar() retourne un int pas un char.


  12. #12
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    Oui tout à fait d'accord mais je n'ai rien dit car il veut peut être plus tard faire un traitement comme une vérification sur le caractère reçu.
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

Discussions similaires

  1. Réponses: 0
    Dernier message: 01/06/2012, 15h40
  2. [2.x] sf2 Expected argument of type "object", "integer" given
    Par babak67 dans le forum Symfony
    Réponses: 2
    Dernier message: 07/09/2011, 16h09
  3. Resutlat de calcul sur date formaté
    Par neness dans le forum SQL
    Réponses: 6
    Dernier message: 16/06/2004, 15h34
  4. Question sur le format de texture
    Par Johngame dans le forum DirectX
    Réponses: 1
    Dernier message: 06/12/2003, 12h22
  5. question sur le format des images ..
    Par vbcasimir dans le forum Langages de programmation
    Réponses: 7
    Dernier message: 28/08/2003, 12h08

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