2015-12-08 2 views
0

Я должен дать пользователю ввести слово, например «Еда». Кроме того, я должен иметь конкретные аргументы (слова), такие как Meal, Drink, ... которые я должен сравнить со словом, введенным пользователем. Я точно не знаю, как я могу сравнить слово, которое является символом для меня с составленным списком слов. В следующем примере я бог программа авария:Как я могу сравнить введенное слово со списком слов?

char listing[3]; 
listing[0]="Meal"; 
listing[1]="Drink"; 
listing[2]='\0'; 

Я должен сравнить этот список с набранным в слове:

char option; 
printf("Please insert your option"); 
scanf("%s", &option); 

Может быть, мой список не так? я просто попытался сравнить его в своей функции с, если, но ее не работает:

if ((option==listing[0]) || 
(option==listing[1])) 

И если я объявляю список с, например, «Питание» это говорит предупреждение: назначение делает целое число от указателя без приведения [ включено по умолчанию] |

Спасибо за вашу помощь, я, к сожалению, не нашел решение, позор мне. Greetz

+1

и 'char * listing [3]', не забывайте * звездочку *. –

+0

'char listing [3]; листинг [0] = «Питание»; 'Попытка присвоить 5 символов (MEAL0) массиву из 3 обычно не работает ... (И я игнорирую несовместимость типа). Похоже, вы не знаете разницы между символом 'char' и строкой. – John3136

ответ

0

Вместо if ((option==listing[0]) || (option==listing[1])) используйте strcmp:

if((0 == strcmp(option, listing[0])) || (0 == strcmp(option, listing[1])))

Кроме того, listing должен быть массив указателей на Чаре.

char *listing[2]; 
listing[0]="Meal"; 
listing[1]="Drink"; 
+0

'char option;' неверно. Может быть использовать что-то вроде этого параметра 'char [100] =" ";'. Также удалите 'listing [2] = '\ 0';' (я не знаю, откуда у вас это получилось). – artm

+0

вы не упомянули 'cMM' в коде, и я не вижу причин, по которым вам понадобится' isalpha (cMM) == 1'. Просто использовать 'strcmp' будет хорошо. – artm

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