error C2664: 'strcpy' : cannot convert parameter 1 from 'char' to 'char *'



  • Hallo Leute!

    Hoffe ihr könnt mir bei unten angegebenem Problem helfen.

    Bei folgendem Quelltext...

    #include <iostream>
    #include <stdio.h>
    #include <iomanip>
    #include <string.h>
    
    using namespace std;
    
    char heizkostenInNK;
    bool on = true;
    int nr;
    
    struct wohnungstyp{
    	bool heizkostenInNK_bool;
    };
    
    wohnungstyp daten[100];
    
    int main(){
       ...
       ...
          if(daten[nr].heizkostenInNK_bool = true){
             strcpy(heizkostenInNK, "Ja");          // <- Fehlerzeile 1
          }
          else{
             strcpy(heizkostenInNK, "Nein");        // <- Fehlerzeile 2
          }
       ...
       return(0);
    }
    

    ...bekomme ich folgende Error-Meldungen vom Compiler:

    error C2664: 'strcpy' : cannot convert parameter 1 from 'char' to 'char *'
    Conversion from integral type to pointer type requires reinterpret_cast, C-style cast or function-style cast
    error C2664: 'strcpy' : cannot convert parameter 1 from 'char' to 'char *'
    Conversion from integral type to pointer type requires reinterpret_cast, C-style cast or function-style cast
    

    Leider fehlt mir nun eine Idee, wie ich den Compiler zufriedenstelle. 😕
    Falls weitere Infos zur Problemlösung fehlen, bitte melden.

    Danke,
    Select



  • schreib mal
    &heizkostenInNK
    bei den strcpy's.



  • Hat funktioniert! 👍
    Vielen Dank!

    Gruß,
    Select



  • Null Problemo. :xmas1:

    EDIT: Schaue dir nochmal Pointer/Zeiger in C/C++ an. Dann weißt du auch warum. 😉
    Die Funktion verlangt einen Zeiger, was im Grunde nichts anderes als eine Adresse ist. Mit dem &-Operator übergibst du der Funktion die Adresse deiner Variable.
    :xmas2:



  • Select schrieb:

    Hat funktioniert!

    Das ist dann aber mehr oder weniger Zufall. heizkostenInNK ist ein char, da passt nur ein Zeichen rein. Wenn du mehrere reinkopierst, überschreibst du, was dahinter im Speicher steht.



  • Oh, MFK hat Recht. Habe mir den Rest des Programms gar nicht angeschaut. 😃



  • Das ist dann aber mehr oder weniger Zufall. heizkostenInNK ist ein char, da passt nur ein Zeichen rein. Wenn du mehrere reinkopierst, überschreibst du, was dahinter im Speicher steht.

    Hmmm, das habe ich eben auch festgestellt. Sobald ich den char ausgeben will kommt nur das zuletzt übergeben Zeichen an. Bei...

    strcpy(heizkostenInNK, "Ja");
    cout << heizkostenInNK;
    

    ...also...

    J
    

    ...anstatt...

    Ja
    

    Problem also noch gegeben.

    Gruß,
    Select



  • Anstatt char heizkostenInNK;
    musst du ein Arrayy anlegen :
    char heizkostenInNK[15];

    in strcpy dann das & entfernen



  • Das hatte ich schon erfolglos versucht. Auch ein array bringt mich so leider nicht weiter. Kommt weiterhin zum gleichen Compiler-Error.

    Einzige Möglichkeit, die ich momentan sehe, ist die Buchstaben auf mehrere chars zu verteilen und diese dann nacheinander wieder auzugeben. Das würde mit Hilfe des "&" funktionieren, aber das muss doch auch vereinfacht gehen, oder?

    Gruß,
    Select



  • Select schrieb:

    Auch ein array bringt mich so leider nicht weiter. Kommt weiterhin zum gleichen Compiler-Error.

    Das kann nicht sein. Bitte zeig den Code mit Array und die dazugehörige Fehlermeldung.



  • #include <iostream>
    #include <stdio.h>
    #include <iomanip>
    #include <string.h>
    
    using namespace std;
    
    char heizkostenInNK[5];
    bool on = true;
    int nr;
    
    struct wohnungstyp{
    	bool heizkostenInNK_bool;
    };
    
    wohnungstyp daten[100];
    
    int main(){
       ...
       ...
          if(daten[nr].heizkostenInNK_bool = true){
             strcpy(heizkostenInNK[5], "Ja");          // <- Fehlerzeile 1
          }
          else{
             strcpy(heizkostenInNK[5], "Nein");        // <- Fehlerzeile 2
          }
       ...
       return(0);
    }
    

    Compiler:

    error C2664: 'strcpy' : cannot convert parameter 1 from 'char' to 'char *'
    Conversion from integral type to pointer type requires reinterpret_cast, C-style cast or function-style cast
    error C2664: 'strcpy' : cannot convert parameter 1 from 'char' to 'char *'
    Conversion from integral type to pointer type requires reinterpret_cast, C-style cast or function-style cast
    

    Danke,
    Select



  • Lass das [5] bei strcpy weg. Und informier dich nochmal über Arrays und deren Verwendung.


Anmelden zum Antworten