[英]scanf causes loop to terminate early
c='q';
while(c=='q')
{
printf("hello");
scanf("%c",&c);
}
為什么循環在沒有任何理由的情況下退出輸入?
循環沒有理由退出。 scanf
調用將從stdin
讀取一個字符並將其存儲在c
,從而改變c
的值。 當測試循環條件時,可能c
不再是==
'q'
(例如,你輸入的不是“q”)。
如果你試圖循環,直到用戶沒有輸入“q”:
do {
printf("hello");
scanf("%c", &c);
}
while (c != 'q');
但請注意,在大多數控制台系統上, scanf
將不會返回,直到用戶輸入完整的文本行並按下回車鍵。 如果您希望按鍵進行操作,則可能需要查看其他功能。
我假設您希望用戶輸入'q'
表示退出,並且您希望循環在c == 'q'
時退出。
嘗試:
c='\0';
while(c !='q')
{
printf("hello");
scanf("%c",&c);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.