[英]while(scanf) is infinite looping?
該代碼應該接受一行包含不同字符的用戶輸入,然后打印出一行僅包含字母的行。 例如,Cat8h08er64832&*^ine 將是 Catherine。 但是,代碼可以工作並輸出“Catherine”,但是程序沒有退出……請看這里的圖片我不確定循環是無限循環還是……
int main(void){
int i=0, j=0;
char userString[1000];
char alphabet[1000];
printf("Please enter a string: ");
while(scanf("%c", &userString[i])){
if((userString[i]>='A' && userString[i]<='Z')||(userString[i]>='a'&&userString[i]<='z')){
alphabet[j]=userString[i];
printf("%c", alphabet[j]);
j++;
}
i++;
}
printf("\n");
return 0;
}
您的問題是您正在通過檢查返回值0
來檢查scanf
是否已完成。 當沒有更多輸入時, scanf
返回EOF
(通常為 -1)。 所以如果你得到一些輸入(返回 1)然后沒有更多的輸入(返回 -1),你的循環將永遠不會退出。
更改scanf
條件以檢查<> EOF
。
這個答案也很好地解釋了它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.