我不知道为什么这个程序不起作用:
char syze;
printf("Please enter your desired size (Choose from S,M,L,XL)\n");
scanf("%s", &syze);
if(syze =='S')
{printf("Available");}
else if(syze =='M')
{printf("Available");}
else if(syze =='L')
{printf("Available");}
else if(strcmp(syze,"XL")==0)
{printf("Available");}
else
{printf("Please enter a valid character");}
return 0;
最佳答案
问题出在
scanf("%s", &syze);
在您的代码中,size
是 char
类型,您应该使用 %c
格式说明符来扫描输入。
如果您使用 %s
格式说明符来扫描 char
的输入,基本上您将超出分配的内存,从而创建 undefined behaviour
然后,
strcmp(syze,"XL")
也是错误的,如 strcmp()
需要 (const
)char *
作为两个参数,并且您将 char
作为第一个参数传递。您可以简单地使用相等运算符 ==
来比较 char
。
最后,char
将永远无法容纳 "XL"
。
解决方案:如果您需要将 "XL"
作为输入之一,您可能需要将 syze
更改为数组,喜欢
char syze[3] = {0};
或者类似的。在这种情况下,您可以将 scanf()
保持为
scanf("%2s", syze);
并使用 strcmp()
比较您的输入。
关于c - 程序不断崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32082013/