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 :

Afficher un caractère : invalid conversion from `const char*' to `char'


Sujet :

C++

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    79
    Détails du profil
    Informations personnelles :
    Âge : 30
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 79
    Points : 63
    Points
    63
    Par défaut Afficher un caractère : invalid conversion from `const char*' to `char'
    Bonjour,

    Voila, j'ai fait ce 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
    19
    20
    21
    22
    23
    #include <stdlib.h>
    #include <stdio.h>
     
    char ifs(int &a);
     
    int main(int argc, char *argv[])
    {
        int j=0;
        printf("Il y a %d argument%c, il%c sont :\n\n", argc, ifs(argc), ifs(argc));
        for(int &i = argc;i != 0;i--)
        {
                printf("- %s\n", argv[j]);
                j++;
        }
        system("PAUSE>0");
        return EXIT_SUCCESS;
    }
     
    char ifs(int &a)
    {
         if(a>1)
           return "s"; // Ligne 22
    }
    Mais dev-c++ me retourne :
    C:\Dev-Cpp\main.cpp In function `char ifs(int&)':
    22 C:\Dev-Cpp\main.cpp invalid conversion from `const char*' to `char'
    C:\Dev-Cpp\Makefile.win [Build Error] [main.o] Error 1
    Pourquoi ? Et comment réparer l'erreur ?

    Merci

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    80
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations forums :
    Inscription : Mars 2006
    Messages : 80
    Points : 77
    Points
    77
    Par défaut
    Citation Envoyé par theo7 Voir le message
    Bonjour,

    Voila, j'ai fait ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    char ifs(int &a)
    {
         if(a>1)
           return "s"; // Ligne 22
    }
    Salut, ton main est un peu bizare O_o, comme c'est la fin de la journée et que je suis un peu fatigué je te corrige juste ta fonction char ifs(int &a);

    Dans ton test tu renvoie un char * (le "s") or le type de retour de ta fonction est un char . Solution : soit tu change le type de retour de ta fonction soit tu renvoi 's' au lieu de "s".
    Pour le reste tu corrigera tout seul si t'a des souci de compilation

    Bon week end

  3. #3
    Membre chevronné
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Points : 2 107
    Points
    2 107
    Par défaut
    C'est pas du C++, c'est du C...

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    80
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations forums :
    Inscription : Mars 2006
    Messages : 80
    Points : 77
    Points
    77
    Par défaut
    Citation Envoyé par poukill Voir le message
    C'est pas du C++, c'est du C...
    J'ai cru que j'étais dans le forum C moi . Allé je file. Bon week end ^^

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    79
    Détails du profil
    Informations personnelles :
    Âge : 30
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 79
    Points : 63
    Points
    63
    Par défaut
    Merci stranger
    Et mon code il marche en C et en C++ :p

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par theo7 Voir le message
    Voila, j'ai fait ce code :
    Pas du C. Le forum C++, c'est à coté. Je déplace ?

  7. #7
    Membre Expert

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Juin 2003
    Messages
    4 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 506
    Points : 5 723
    Points
    5 723
    Par défaut
    Citation Envoyé par theo7 Voir le message
    Merci stranger
    Et mon code il marche en C et en C++ :p
    Un compilateur C ne connaît pas les références donc cela m'étonnerait

    L'autre problème dans cette fonction, en plus de ce qu'à répondu stranger est que dans le cas où a n'est pas plus grand que 1 tu ne renvois aucune valeur.

  8. #8
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 626
    Points : 30 684
    Points
    30 684
    Par défaut
    Salut,

    Pour t'éviter, par la suite, de rejouer au "ping pong" entre le forum C et le forum C++ avec tes questions, il me semble primordial que tu prenne l'habitude de faire la différence de ce qui est "C++" et de ce qui ne l'est pas.

    D'abord, parce que certaines fonctions réagissent différemment selon qu'elles sont employées dans un programme écrit en C ou dans un programme écrit en C++:

    L'exemple le plus flagrant est le groupe de fonctions (m/re/c)alloc , qui, en C ne nécessitent pas de transtypage alors que le C++ en veut absolument un

    Ensuite, parce que le C ne connait pas certaines choses qui existent en C++ (sinon, il n'y aurait qu'un langage ) et, enfin, parce que le C++ fournit d'origine une série de classes prévues pour te faciliter la vie

    Ainsi, la fonction printf est typiquement une fonction C uniquement - au même titre que tout ce qui permet de gérer les flux divers en C - car on préférera utiliser les classes de gestion de flux fournies par le C++ (cin, cout, (i/o)fstream pour les fichiers, (i/o)stringstream pour la convertion chaine de caractères <<>>objets).

    Dans la même veine, tu verra que nous risquons très souvent de te "taper sur les doigts" si tu t'amuse à gérer les chaines de caractères et/ou les tableaux comme on le fait normalement en C, tout simplement parce qu'il existe des classes qui nous permettent d'éviter un maximum d'écueils, dont, tous ceux liés aux problèmes d'allocation dynamique.

    Enfin, comme indiqué par Emmanuel, le C ne connait pas les références (au passage, il faut savoir qu'il est très rare de décider de passer un type primitif par référence si tu ne souhaite pas le modifier )

    Pour terminer, sois toujours attentif aux extentions que tu donnes à tes fichiers d'implémentation:

    Comme c'est parfois le même outil qui travaille pour compiler le C et le C++ (mais en suivant des règles différentes), la seule source d'information dont il dispose pour savoir s'il doit travailler en "mode C" ou en "mode C++", c'est... l'extension

    Il choisira de travailler en mode C si l'extension du fichier est... .c et en mode C++ si l'extension du fichier est .cpp ou cxx (sur les systèmes sensibles à la casse, il choisira de travailler en mode C++ sur les extension en .C )

    Ton code, très orienté C peut, par chance etre compilé comme s'il s'agissait de code C++, mais serait refusé à la compilation si tu essayais de le compiler comme du C

    (nota: que ce soit en C ou en C++, on préfère éviter autant que possible les appels à la fonction system(), car... beaucoup d'instructions que l'on peut appeler par ce biais n'existent que sur un système particulier (parfois windows, parfois linux selon l'instruction appelée, mais très rarement les deux )

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 27/09/2011, 15h53
  2. Réponses: 8
    Dernier message: 15/03/2011, 17h14
  3. Invalid conversion from 'const char*' to 'xmlChar'
    Par Nadawoo dans le forum Débuter
    Réponses: 8
    Dernier message: 14/11/2010, 18h25
  4. Réponses: 4
    Dernier message: 15/10/2008, 21h30
  5. error: invalid conversion from `const wxChar*' to `CHAR*'
    Par barbarello dans le forum wxWidgets
    Réponses: 16
    Dernier message: 31/01/2006, 11h28

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