2012-06-15 13 views

Antwort

19

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.

2

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.

7

Arrays sind nicht zuweisbar.

Sie sollten memcpy verwenden Inhalte aus testStr zu revS

memcpy(revS,testStr,50); 
4

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.

1

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.

0

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); 
} 
Verwandte Themen