2017-02-16 6 views
0

Script eingeben:inkompatible Typen bei der Zuordnung ‚char [100]‘

#include <stdio.h> 
#include <stdlib.h> 

char inn[100]; 

int main() 
{ 

    inn='EEE'; 

    if(strcmp(inn,"EEE") == 0){ 
    printf("ok"); 
    } 

} 

Compile Fehler:

gcc test.c -o test 

test.c: In function ‘main’: 
test.c:9:9: warning: multi-character character constant [-Wmultichar] 
    inn='EEE'; 
     ^
test.c:9:8: error: incompatible types when assigning to type ‘char[100]’ from type ‘int’ 
    inn='EEE'; 

Was ist die Lösung?

Sollte ich meine Top-Deklaration ändern oder anderswo etwas anders machen?

+0

Die Begrenzer '' 'und' ''um einen Wert bezeichnen den Wert als Zeichenkonstante. Eine Zeichenkonstante kann jedoch nur aus 1 Zeichen bestehen. Der Rest wird ignoriert oder als Warnung gekennzeichnet. –

+0

1) Arrays können nicht zugewiesen werden, 2) String-Literale müssen verwenden "", nicht '' s. –

Antwort

2

einfache Anführungszeichen sind in C für Zeichenfolge ungültig. Sie können nur für einzelne Zeichen verwendet werden.

Um "EEE" String inn Variable, verwenden strcpy Funktion gesetzt:

strcpy(inn, "EEE");

#include <stdio.h> 
#include <stdlib.h> 
#include <string.h> 

char inn[100]; 
int main() { 
    //In C, you have to manually copy string 
    strcpy(inn, "EEE"); 
    if (strcmp(inn,"EEE") == 0){ 
     printf("ok"); 
    } 
} 

Denken Sie daran, string.h Bibliothek gehören.

+0

... oder verwenden Sie char inn [100] = {"EEE"}; ' –

+0

@PaulOgilvie das ist im Falle der Initialisierung Kann nur char inn sein [100] = "EEE"; aber das war nicht die Frage, die er acked nehme ich an. – tilz0R

+0

in doppelte Anführungszeichen geändert. und platziert ** strcpy (inn, "EEE"); ** richtig unter ** inn = "EEE"; ** Warnung: inkompatible implizite Deklaration der eingebauten Funktion 'strcpy' [standardmäßig aktiviert] strcpy (inn, "EEE"); –

Verwandte Themen