[英]Program keeps on crashing
我不知道為什么該程序不起作用:
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
,那么實際上您將超出分配的內存,從而產生未定義的行為
然后,
strcmp(syze,"XL")
這也是錯誤的,因為strcmp()
需要將( const
) char *
作為兩個參數,並且您將char
作為第一個參數傳遞。 您可以簡單地使用等於運算符==
比較char
。
最后,一個char
將永遠無法容納"XL"
。
解決方案:如果需要將"XL"
作為輸入之一,則可能需要將syze
更改為數組,例如
char syze[3] = {0};
或同樣。 在這種情況下,您可以將scanf()
保留為
scanf("%2s", syze);
並使用strcmp()
比較您的輸入。
您在strcmp(syze,"XL")==0
遇到問題。 您不能將char
與字符串XL
進行比較。 對於該選擇僅使用X
並與其他if(syze =='X')
。
您在scanf("%s", &syze);
還有另一個問題scanf("%s", &syze);
。 使用%c
掃描char
:
scanf("%c", &syze);`
如果要繼續使用選項“ XL”,則應將syze
聲明為char syze[3]
並使用strcmp
比較所有選擇。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.