簡體   English   中英

scanf導致循環提前終止

[英]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.

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