2017-02-16 4 views
0

Сценарий:несовместимые типы при назначении типа «символ [100]»

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

char inn[100]; 

int main() 
{ 

    inn='EEE'; 

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

} 

Compile Error:

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'; 

Что такое решение?

Должен ли я изменить свое верхнее объявление или мне нужно что-то по-другому в другом месте?

+0

Разделители '' 'и ''' вокруг некоторого значения обозначают значение как константу символа. Но постоянная символа может состоять только из 1 символа. Остальное игнорируется или помечено как предупреждение. –

+0

1) Массивы не могут быть назначены, 2) строковые литералы должны использовать '' ', а не' '' s. –

ответ

2

одинарные кавычки недействительны в строке C для строки. Они могут использоваться только для одного символа.

Чтобы установить "EEE" строку переменной МНН, использование функции STRCPY:

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"); 
    } 
} 

Remember включить string.h библиотеку тоже.

+0

... или использовать 'char inn [100] = {" EEE "};' –

+0

@PaulOgilvie это в случае инициализации может быть просто char inn [100] = «EEE», но это не было вопросом, который он сделал, я полагаю. – tilz0R

+0

изменено на двойные кавычки и помещено ** strcpy (inn, «EEE»); ** право под ** inn = «EEE»; ** предупреждение: несовместимое неявное объявление встроенной функции «strcpy» [включено по умолчанию] strcpy (inn, «EEE»); –

Смежные вопросы