Ich weiß, dass dies bereits beantwortet wurde, aber ich wollte eine Antwort teilen, die ich jemandem gegeben habe, der in einer C / C ++ - Facebook-Gruppe eine sehr ähnliche Frage gestellt hat.
Arrays haben keine Zuweisungsoperatorfunktionen *. Dies bedeutet, dass Sie einem Zeichenfolgenliteral nicht einfach ein char-Array zuweisen können. Warum? Weil das Array selbst keinen Zuweisungsoperator hat. (* Es ist ein konstanter Zeiger, der nicht geändert werden kann.)
Arrays sind einfach ein Bereich des zusammenhängenden zugewiesenen Speichers, und der Name des Arrays ist tatsächlich ein Zeiger auf das erste Element des Arrays. (Zitat von https://www.quora.com/Can-we-copy-an-array-using-an-assignment-operator )
Um ein Zeichenfolgenliteral (wie "Hello world"oder "abcd") in Ihr Zeichenarray zu kopieren, müssen Sie alle Zeichenelemente des Zeichenfolgenliteral manuell in das Array kopieren.
char s[100]; Dadurch wird ein leeres Array mit der Länge 100 initialisiert.
Verwenden Sie nun, um Ihr String-Literal in dieses Array zu kopieren strcpy
strcpy(s, "abcd");Dadurch wird der Inhalt aus dem Zeichenfolgenliteral "abcd"kopiert und in das s[100]Array kopiert .
Hier ist ein großartiges Beispiel dafür, was es tut:
int i = 0;
do {
s[i] = ("Hello World")[i];
} while(s[i++]);
Sie sollten natürlich strcpyanstelle dieses benutzerdefinierten String-Literal-Kopierers verwenden, aber es ist ein gutes Beispiel, das erklärt, wie strcpygrundlegend funktioniert.
Hoffe das hilft!