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 :

erreur C2440(programme de débutant)


Sujet :

C++

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 26
    Par défaut erreur C2440(programme de débutant)
    Je me pratique en c++ et pour ce programme il me fait un erreur C2440 et j'ai cherché et je ne trouve pas pourquoi..Pouvez vous m'aider? merci..


    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    #include<iostream.h>
    #include <stdio.h>
    #include <string.h>
     
    //declaration de fonctions
     
    void fonc1(char CH1[],char CH2[]);
     
    //fonction principale****************************************************
     
    void main(void)
    {  
        char CH1[100], CH2[100] ;
     
        cout<<"Introduisez la premiere chaîne de caracteres : "<<endl;
        gets(CH1);
        cout<<"Introduisez la deuxieme chaîne de caracteres : "<<endl;
        gets(CH2);
     
        fonc1(CH1,CH2);
     
     
    }      
     
    //fonctions secondaires ***********************************************
     
    //fonction N1
     
    void fonc1(char CH1[],char CH2[])
    {
         char CH3[100] ;
        int* ptCH3  ;
        ptCH3 = &CH3[0];
     
     
     
     
        strcpy(CH3, CH1);
        strcat(CH3, "");
        strcat(CH3, CH2);
     
     
     
     for (int count = 0;CH3[count]!='\0'; count = count + 1) 
                          cout<< (*ptCH3 + count) <<endl;
     
     
    }


    balises [code] ajoutées par r0d, merci d'y penser dorénavant

  2. #2
    Membre éprouvé
    Inscrit en
    Avril 2008
    Messages
    155
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 155
    Par défaut
    hello,

    #include<iostream.h>
    #include <stdio.h>
    #include <string.h>

    c'est du C==> essaye de remplacer par

    #include<iostream>
    #include <ctdio>
    #include <string>

  3. #3
    Membre confirmé
    Inscrit en
    Avril 2008
    Messages
    95
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 95
    Par défaut
    Salut,

    C'est quoi une erreur "erreur C2440" ? Pour les non utilisateur de Visual C++ ce n'est pas tres parlant ! Il nous en faut un peu plus pour repondre.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 26
    Par défaut
    Compiling...
    3-final-a.cpp
    c:\users\raphael\desktop\travail long\3-final-a.cpp(35) : error C2440: '=' : cannot convert from 'char *' to 'int *'
    Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
    Error executing cl.exe.

    3-final-a.exe - 1 error(s), 0 warning(s)

  5. #5
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par défaut
    Ben, c'est assez explicite: Tu as un tableau de char, et tu cherches à avoir un pointeur sur int dessus...
    C'est normal que sans un cast, ça te jette...

    PS: Déjà utiliser gets() en C, c'est un truc à ne surtout pas faire. Mais alors l'utiliser en C++, c'est une insulte! Utilise la classe std::string et la fonction std::getline() à la place.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  6. #6
    Membre éprouvé
    Inscrit en
    Avril 2008
    Messages
    155
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 155
    Par défaut
    tout est dans le message d'erreur...



    essaye ca:

    char CH3[100] ;
    char* ptCH3 ;
    ptCH3 = &CH3[0];

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

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Par défaut
    L'erreur est parfaitement signalée par le compilo....
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    char CH3[100] ;
    int* ptCH3  ;
    ptCH3 = &CH3[0]; // là il faut un cast
    Sinon le code est du C, pas du C++ !!

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

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Par défaut
    Grilled deux fois, tout à été dit !!!

  9. #9
    r0d
    r0d est déconnecté
    Membre expérimenté

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    4 297
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 4 297
    Billets dans le blog
    2
    Par défaut
    Effectivement, ton code est un horrible mélange de C et de C++, qui peut entrainer les pires erreurs.

    -> Comme il a été dit, les en-têtes en c++ c'est:

    #include<iostream>
    #include <ctdio>
    #include <string>

    -> char CH3[100] ;
    C'est du C. En C++ on utilise la classe string

    -> gets, strcpy et strcat c'est du C. En c++ on utilise les flux ou les fonctions membres de la classe string.

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 26
    Par défaut
    oui je suis au courant pour le mélange c et c++ ..c'est les contraintes de mon cours..ils veulent savoir si on se débrouille avec les 2. Cependant l'affichage de la fin du programme inscrit une série de chiffre...je serais supposé voir la chaine numéro 1 suivi de la chaine numéro 2 (la chaine numéro 3 en fait)...?!?

    merci pour votre aide

  11. #11
    Membre confirmé
    Inscrit en
    Avril 2008
    Messages
    95
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 95
    Par défaut
    Pour le but de l'exercice c clairement rate
    Tu as
    for (int count = 0;CH3[count]!='\0'; count = count + 1)
    cout<< (*ptCH3 + count) <<endl;
    *ptCH3 : OK, caractere (pointeur dereference)
    count : int
    =>*ptCH3 + count : conversion implicite de ton character en int
    Ce que tu veux faire c'est iterer dans ton tableau de caracteres avec la varibale de boucle count, donc il faut que tu mettes :
    *(ptCH3 + count) !!
    ptCH3: pointeur de debut de chaine
    ptCH3 + count : pointeur sur l'element courant de la chaine
    => *(ptCH3 + count) : caractere a la position count dans la chaine !

  12. #12
    r0d
    r0d est déconnecté
    Membre expérimenté

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    4 297
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 4 297
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par raph_rf Voir le message
    oui je suis au courant pour le mélange c et c++ ..c'est les contraintes de mon cours..ils veulent savoir si on se débrouille avec les 2.
    rôlalaaaaaa, quelle horreur... c'est déprimant sérieux. Je comprend mieux pourquoi on est tout le temps obligé de ré-expliquer les bases du c++ à des jeunes qui croient connaître ce langage

Discussions similaires

  1. erreur de programme
    Par acik59 dans le forum C
    Réponses: 7
    Dernier message: 16/05/2007, 12h40
  2. erreur cannot find bean..(débutant)
    Par mackab dans le forum Struts 1
    Réponses: 16
    Dernier message: 11/05/2007, 17h29
  3. erreur dans programme java sur des vecteurs 3D
    Par HighSchool2005 dans le forum Langage
    Réponses: 18
    Dernier message: 15/02/2007, 16h38
  4. erreur compilation programme
    Par auxisteff dans le forum C
    Réponses: 8
    Dernier message: 09/02/2007, 21h27
  5. aide petit programme pour débutant
    Par kartp0rqx dans le forum C
    Réponses: 16
    Dernier message: 14/10/2005, 19h31

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