Error: Incompatible types in assignment of 'const char [32]' to 'char[1024]'



  • Hallo leute,

    wie oben im Titel erwähnt habe ich eine Fehlermeldung mit dem ich nichts anfangen kann!

    So sieht der code aus ungefähr:

    ...char data[1024];
    ...
    ...
    ...
    data="c://user/desktop/test..." ;   <--------Error
    

    Verstehe nicht wieso ich das nicht in einen passend großen ARRAY SPEICHERN KANN ???? Bin voll genervt von diesem Problem die ganze zeit schon über 😞

    Vielen Dank im vorraus, für eure hilfreichen tipps!

    mfg



  • strcpy



  • Die Fehlermeldung ist doch ziemlich eindeutig:
    Du versuchst einen Array von const char s in einem Array von non-const char s zu speichern.

    Mach's doch einfach auf dem C++ Weg:

    std::string data = "c://user/desktop/test...";
    

    Dann gibt's keine Probleme.



  • @Michael: Wie ist das mit dem Befehl gemeint, ich habe es auch schon gesehen gehabt in google wusste ehrlich gesagt nicht was ich damit anfangen soll.

    @Fehlermeldunglesen: Ja, das tue ich! Danke für die Hilfe... Das Problem ist ich möchte das über Ethernet und ein TCP protokoll senden und wegen den Steuerzeichen ist es schon sehr sinvoll das es in char bleibt! Deshalb suche ich nach einer Alternative



  • Gast 3322 schrieb:

    Deshalb suche ich nach einer Alternative

    Literals sind konstant, d.h. man könnte schreiben

    const char* Text = "Hello";
    

    Text kann nicht geändert werden, ein ((char*)Text)[1]='a' bedeutet undefiniertes Verhalten (außerdem unschöner C-Cast).
    Aber mit

    std::string s = Text; // s initialisiert durch const char*
    // ist dies kein Problem
    s[1] = 'a';
    

    .
    s.c_str() liefert einen const char*, mit dem Indexoperator kommt man immer an die einzelnen Buchstaben heran.
    Deshalb: Am Besten entweder std::string oder const char*, jedoch kein char[1024];
    Edit: s._cstr() & Cast hinzugefügt



  • std::string hat keine Probleme mit Steuerzeichen, im Gegenteil: Sogar '\0' darf enthalten sein!



  • @Vicious Falcon: Vielen herzlichen dank! Du bist eine große hilfe gewesen.
    @Oberon_0: ok, danke für den Tipp.

    Ich habe noch eine letzte Frage, ich habe nun mein send mit hex werten gefüllt aber wenn ich die Daten prüfe mit wireshark(netzwerk sniffler) sendet es
    ganz was anderes raus als was ich will. Es erkenn die Dezimal zahlen nicht!

    so lautet mein Befehl data="\x013334\x02bliblablu\x03848484\x04";

    Es sendet jetzt irgendwie alles was ich will nur die Dezimalzahlen gefolgt von den Hexwerten (wie x01 XXXXX). Die aufgezählten X werden nicht mitgesendet.

    Könnt ihr mir da noch ein Tipp geben ?



  • Danke, habe es schon gelöst!


Anmelden zum Antworten