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