簡體   English   中英

程序不斷崩潰

[英]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);

在您的代碼中, sizechar類型,您應該使用%c格式說明符來掃描輸入。

如果您使用%s格式說明符來掃描輸入中的char ,那么實際上您將超出分配的內存,從而產生未定義的行為

然后,

 strcmp(syze,"XL")

這也是錯誤的,因為strcmp()需要將( constchar *作為兩個參數,並且您將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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM