PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : (gelöst) strcpy() aus C18 funktioniert nicht



theodrin
30.12.2007, 14:31
Hallo!

Ganz blödes Problem:

Die Funktion strcpy() funktioniert nicht. Also ich wollte die halt ganz normal verwenden.

char string[10] = {0};

strcpy(string, "Hallo");

Aber leider funktioniert das nicht. Der Prototyp dazu sieht folgendermaßen aus:
char * strcpy( char * dest, const char * src );

So und jetzt mein Problem: Er schreibt immer als Warning hin:
Warning [2066] type qualifier mismatch in assignment

Er meint damit das "Hallo". Wenn ich versuchen einen TypeCast zu machen dann schreibt er mir auch ne Warning hin.
Also ich probiere dann so: strcpy(string, (const char)"Hallo");
Oder nur const in Klammer, nutzt auch nix. Da kommt Suspicious Pointer Conversion
Also in string steht nach der Funktion nix drinnen. Länge ist 0.
Wie kann ich das Problem lösen?

lg,

PicNick
30.12.2007, 15:47
Das Problem ist, dass Literale wie "Hallo" ja irgendwie im PROGRAMM-Speicher stehen.
"strcpy" liest (und schreibt) aber normalerweise aus dem SRAM.
Also muß irgendwer zuerst das Literal aus dem Flash in den SRam kopieren.
Da kommt's auf den C an. Manche kopieren solche Literale automatisch in den SRAM, manche wohl nicht.

wenn du z.B. schreibst

char hallo[] = "Hallo"

und dann strcpy(string, hallo)

sollte es auf jeden Fall gehen.

theodrin
03.01.2008, 14:28
Hallo!

Danke für den Tipp. Muss natürlich irgendwo im Programmspeicher stehen. Aber ich hab das jetzt anders gemacht.
Eigentlich brauchte ich das strcpy() für die LCD Ansteuerung. Dort hat es nämlich nicht funktioniert zu sagen:
Ausgabe("Hallo");

Aber ich jetzt den Prototypen geändert:

Ausgabe(const rom char *text);
und schon gings.

lg,