C String Warning

Gast #5809869
Lesenswert?

Hallo,

folgender Code:
1
char Cmd[]= "TESTSTRING\r";

Irgendwo später im Code (Cmd ist noch im Scope und existiert noch), will 
ich den Inhalt vom Cmd ändern:
1
*Cmd= "TESTSTRING2\r";

Warum wird hier eine Warning "assignment makes pointer from integer 
without a cast" ausgegeben?

Danke!
(Firma: Schweigstill IT) Persönliche Seite #5809883
Lesenswert?

In C lassen sich leider, außer bei Variablendefinitionen mit 
Initialisierungswert, keine Strings bzw. Character-Arrays einfach so 
zuweisen und aneinanderhängen. Stattdessen muss man Funktionen wie 
strcpy(), strcat() arbeiten. Das hängt vor allem damit zusammen, dass es 
keine echten Stringtypen und Arrayzuweisungen gibt, letzte vor allem 
deswegen, weil Arrays ihre eigene Länge nicht enthalten.
Gast #5809884
Lesenswert?

Werz schrieb:
> Hallo,
>
> folgender Code:
>
1
> char Cmd[]= "TESTSTRING\r";
2
>
>
> Irgendwo später im Code (Cmd ist noch im Scope und existiert noch), will
> ich den Inhalt vom Cmd ändern:
>
>
1
> *Cmd= "TESTSTRING2\r";
2
>
>
> Warum wird hier eine Warning "assignment makes pointer from integer
> without a cast" ausgegeben?
>
> Danke!

Das ist so ziemlich der Standardfehler in C mit Strings, google ist voll 
mit Erklärungen dazu.

Aber:

1. Hat Cmd auch nur Platz für 12 Zeichen (den String + 0 Terminator), 
dem einen größeren String zuzuweisen ist ne 1A Nummer für Fehler. Mach 
Cmd entweder entsprechend Groß oder reserviere dafür den Speicher 
dynamisch.

2. Benutz die string.h, dann kannst du auch strcpy bzw. strncpy benutzen 
um Strings zuzuweisen.
Gast #5809892
Lesenswert?

Tipp noch an dieser Stelle: Füttere die Suchmaschine deines Vertrauens 
mal mit "openbook c". Da werden solche Dinge, wie ich finde, recht gut 
beschrieben und dann sind dir die Hintergründe auch klar.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren