Как использовать оператор switch для присвоения переменной строкового значения

#arrays #c #if-statement #pointers #switch-statement

#массивы #c #if-statement #указатели #switch-statement

Вопрос:

Цель моей программы — рассчитать расходы на поездку между разными городами. Программа выдаст список исходных городов, за которым следует список городов назначения. Пользователю будет разрешено выбирать свои города, вводя первую букву каждого города.

Я хочу, чтобы программа могла принимать входные данные от пользователя и назначать их одному из заданных городов.

 //Declarations
    char src_city[15];
    char dest_city[15];
  
 system("cls");
    puts("n");
    printf("ENTER THE SOURCE CITY: nn");
    printf("B for Baltimorenn");
    printf("C for Chattanoogann");
    printf("N for Nashvillenn");
    printf("P for Pasadenann");
    puts("");
    scanf("%c", amp;src_city);
    switch(src_city)
    {
    case 'B': case 'b': ("Baltimore");
    break;
    case 'C': case 'c': ("Chattanooga");
    break;
    case 'N': case 'n': ("Nashville");
    break;
    case 'P': case 'p': ("Pasadena");
    break;
    }
    getchar();
  

‘B’, ‘C’, ‘N’ и ‘P’ — это буквы, которые я хочу, чтобы пользователь вводил, и когда они это делают, чтобы присвоить их соответствующему городу.

Однако, когда я использую этот метод, я получаю сообщение об ошибке:

«присвоение выражению с типом массива».

Я просмотрел эту ошибку, и затем мне было предложено использовать операторы if / else if, которые, в свою очередь, завершились аналогичным образом. Метод оператора switch имеет для меня наибольший смысл.

Мне нужно присвоить строковое значение соответствующей переменной ( src_city / dest_city ), потому что мне нужно будет вызвать эти переменные позже в printf() инструкции.

Ответ №1:

Вы не показали фактический код, в котором есть проблема, но, судя по описанию проблемы («присвоение выражению с типом массива»), вы пытаетесь что-то вроде

   src_city = "Baltimore";
  

что недопустимо, поскольку переменная типа array не является изменяемым значением lvalue и, следовательно, не может быть присвоена. Вам нужно использовать strcpy() , например

  strcpy(src_city , "Baltimore");