숫자 대신 문자 입력 시 무한 루프 이해
정수 입력을 요구하는 프로그램을 실행하면 무한 루프가 발생하는 경우가 많습니다. 사용자가 숫자 대신 문자를 입력한 경우 이 문제는 C에서 입력 처리가 작동하는 방식으로 인해 발생합니다.
근본 원인:
C에서는 cin 함수를 사용하여 입력을 읽습니다. 그러나 숫자가 아닌 문자를 입력하면 cin은 유효한 정수를 추출하지 못합니다. 결과적으로 cin 스트림 객체 내에 Failbit 플래그가 설정되어 오류를 나타냅니다.
무한 루프 수정:
무한 루프를 해결하려면 다음이 필요합니다. 잘못된 입력 시나리오를 감지하고 처리합니다. 다음은 이 문제를 해결하는 수정된 코드 부분입니다.
#include <limits> // Includes numeric_limits for input validation // (...) Existing code // user enters a number cout << "\nPlease enter a positive number and press Enter: \n"; do { while (!(cin >> num1)) { cout << "Incorrect input. Please try again.\n"; // Clear the failbit and ignore the remaining input cin.clear(); cin.ignore(numeric_limits<streamsize>::max(), '\n'); } if (num1 < 0) cout << "The number you entered is negative. Please enter a positive number to continue.\n"; } while (num1 < 0);
설명:
이러한 수정을 통해 프로그램은 이제 유효한 양의 정수가 입력된 경우에만 루프를 실행하여 잘못된 입력으로 인한 무한 루프를 방지합니다.
위 내용은 C 숫자 입력 프로그램에서 문자로 인해 무한 루프가 발생하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!