1.
name="Messi";
Вы не можете присвоить массиву char
строку, если только она не инициализирована, что делается с помощью:
char name[]="Ronaldo";
Вместо использования strcpy()
(Заголовок string.h
) -> strcpy(name,"Messi");
.
Учтите, что массив name
должен быть способен содержать новую назначенную строку + нулевой терминатор, который в этом случае предоставляется, потому что строка "Ronaldo"
содержит больше символов, чем любой из следующих. Если это не так, вы должны определить name
с соответствующим количеством символов или выбрать имя, которое больше, чем кто-либо другой, или программа вызовет переполнение данных в памяти.
2.
Обратите внимание, что оператор switch
не имеет смысла, если choice
всегда 0
, потому что вы никогда не читали ввод для choice
.
Также cases
к switch
не заключены в {
и }
, что должно привести к ошибке компиляции.
3.
choice
инициализируется персонажем. Хотя это допустимо, это не имеет смысла в этом случае и сбивает с толку читателей вашего кода. Скорее используйте int choice = 0;
Исправленный код:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(void)
{
char name[]="Ronaldo";
int choice=0;
printf("Select Player\n");
printf("1.Messi\n2.Suarez\n3.Neymar\n4.Dembele\n5.Muller\n\n");
scanf("%d",&choice);
switch(choice)
{
case 1:
printf("\nMessi is Selected");
strcpy(name,"Messi");
break;
case 2:
printf("\nSuarez is Selected");
strcpy(name,"Suarez");
break;
case 3:
printf("\nNeymar is Selected");
strcpy(name,"Neymar");
break;
case 4:
printf("\nDembele is Selected");
strcpy(name,"Dembele");
break;
case 5:
printf("\nMuller is Selected");
strcpy(name,"Muller");
break;
default:
printf("Exit");
exit(1);
}
printf("\nPlayer changed to %s",name);
return 0;
}
Выход:
/a.out
Select Player
1.Messi
2.Suarez
3.Neymar
4.Dembele
5.Muller
2 // Input from User
Suarez is Selected
Player changed to Suarez