int main(void) {
char testStr[50] = "Hello, world!";
char revS[50] = testStr;
}
Ich bekomme Fehler: "ungültiger Initialisierer" auf der Linie mit revS
. Was mache ich falsch?Ich bekomme "Invalid Initializer", was mache ich falsch?
int main(void) {
char testStr[50] = "Hello, world!";
char revS[50] = testStr;
}
Ich bekomme Fehler: "ungültiger Initialisierer" auf der Linie mit revS
. Was mache ich falsch?Ich bekomme "Invalid Initializer", was mache ich falsch?
Da Sie nicht so initialisieren können, benötigen Sie einen konstanten Ausdruck als Initialisierungswert. Ersetzen Sie es mit:
int main (void) {
char testStr[50] = "Hello, world!";
char revS[50]; strcpy (revS, testStr);
:
}
Oder, wenn Sie wirklich Initialisierung möchten, können Sie so etwas wie verwenden:
#define HWSTR "Hello, world!"
int main (void) {
char testStr[50] = HWSTR;
char revS[50] = HWSTR;
:
}
Dies liefert einen konstanten Ausdruck mit minimalen Überschneidungen in Ihrer Quelle.
Ein Initialisierer für eine char[]
muss entweder eine Literalzeichenfolge oder etwas wie {1,2,3,4}
sein. Es darf nicht der Name einer anderen Variablen sein.
Arrays sind nicht zuweisbar.
Sie sollten memcpy verwenden Inhalte aus testStr
zu revS
memcpy(revS,testStr,50);
Nur konstanter Ausdrücke kopieren verwendet werden können Arrays zu initialisieren, wie in Ihrer Initialisierung von testStr
.
Sie versuchen, revS
mit einer anderen Array-Variablen zu initialisieren, die nicht ein konstanter Ausdruck ist. Wenn Sie den Inhalt der ersten Zeichenfolge in die zweite Zeichenfolge kopieren möchten, müssen Sie strcpy
verwenden.
Sie
char revS[50] = testStr;
tun sind, die da Sie falsch ist nicht char *
zu char
zuweisen können.
Versuchen Sie revS = testStr;
sollte es funktionieren.
Sofern Sie nicht auf die Manipulation der zweiten Array planen können Sie auch einen Zeiger verwenden:
int main(void){
char textStr[50] = "hello worlds!";
char *revS = textStr;
printf("%s\n", revS);
}
Wenn Sie wirklich verrückt erhalten möchten Sie zu einer bestimmten Stelle im Array verweisen kann mit der Referenzoperator:
int main(void){
char textStr[50] = "hello worlds!";
char *revS = &textStr[5];
printf("%s\n", revS);
}