![](/img/trans.png)
[英]Why is the scanf statement executing before the first printf statement?
[英]Why is the else statement not being executed while using scanf() and printf()?
int p;
int j;
printf("Who is Palpatine?\n");
scanf("%s", &j);
if (j = "Senate")
{
printf("Your number sir?\n");
scanf("%d", &p);
printf("CT %d, the time has come. Execute Order Sixty-Six.\n", p);
}
else
{
printf("Incorrect\n");
}
return 0;
}
我一直在測試這些代碼行,如果我在提示符中寫了任何內容,它會通過我說Senate的部分,即使我沒有輸入Senate,也會跳過我的其他聲明。 執行代碼圖片中的示例是當我輸入Sen而不是Senate時。
在已執行的代碼圖片中划掉代碼的部分也沒有處理問題,而且我的間距很糟糕。
謝謝,所有的反饋表示贊賞。
將j聲明為一個字符串來保存參數,然后在你的scanf()中,只執行“j”,而不是&j,因為它是一個字符串。 此外,如果j = =參議院,而不是j =參議院。 一個=是分配,但兩個是檢查相等。
希望這可以幫助!
編輯:使用strcmp(j,“參議院”)
如果您在代碼中注意到,則scanf
語句錯誤。
這是你的scanf
聲明:
scanf("%s", &j);
如果您注意到您在使用&j
的語句中使用%s
。 在代碼的前面,你說j
是一個整數。 因此,您應該使用%d
。 要修復代碼,請將j
為字符串以存儲字母。 為此,請單擊此鏈接 ,它將帶您進入StackOverflow問題以創建字符串類型變量。
另外,在你的if
語句改變: if (j = "Senate")
to if (j = 'Senate')
。 如果使用""
執行此操作,則會收到錯誤。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.