LinuxForum.Fans
Тема

В Си(чайника) оператор switch - ошибка!

Автор: droncheek 5 сообщений 3450 просмотров 🔒 закрыта
#19777

При компиляции выдаёт ошибки.

text

./Документы/программа:50: ошибка: в операторе switch задано не целое      
./Документы/программа:52: ошибка: значение case-метки неприводимо к целочисленной константе                                                                               
./Документы/программа:55: ошибка: значение case-метки неприводимо к целочисленной константе                                                                               
./Документы/программа:58: ошибка: значение case-метки неприводимо к целочисленной константе
./Документы/программа:61: ошибка: значение case-метки неприводимо к целочисленной константе
./Документы/программа:64: ошибка: значение case-метки неприводимо к целочисленной константе

, а код такой (кратко):

text

char poisk_sist[4]="net";
void main(void)
{
  switch(poisk_sist)
      {
    case "goo":
     google();
    break;
    case "apo":
     aport();
    break;
    case "ram":
     rambler();
    break;
    case "yan":
     yandex();
    break;
    case "yah":
     yahoo();
    break;
    default:
     printf("Поисковая система не определена!\n");
    exit(1);
      }
}
#19793

Это значит, что только целочисленное значение? Но в учебнике в качестве примера используется символьная переменная.

#19794

целое число - integer, если не ошибаюсь. можно использовать char если не ошибаюсь. а вот тип string - исключено, что, согласитесь, несколько иное нежели символьная переменная :)

#19797

Loky абсолютно прав. Вот так

text

char ch = 'a';

switch(ch) { case 'b': ... break; case 'c': ... break; case 'a': ... break; default: ... break; }

прокатило бы

В Вашем случае проще всего использовать функцию strcmp



Закрываю, как решенную

Войдите или зарегистрируйтесь, чтобы ответить.