문자를 정수 입력으로 허용하는 C 프로그램의 무한 루프 문제
이 문제는 프로그램에서 정수 입력을 기대하지만 사용자가 입력할 때 발생합니다. 대신 편지. 입력 스트림의 예기치 않은 문자로 인해 프로그램이 무한 루프에 들어갑니다. 이로 인해 "입력한 숫자는 음수입니다. 계속하려면 양수를 입력하십시오."라는 메시지가 계속 표시됩니다. 사용자에게 유효한 숫자를 입력할 기회를 제공하지 않습니다.
설명
이 문제의 근본 원인은 C 입력 스트림의 동작에 있습니다. 사용자가 숫자가 아닌 문자를 입력하면 입력 스트림의 "failbit" 플래그가 설정됩니다. 그러나 스트림이 지워지지 않아 프로그램이 동일한 루프 반복에 머물러 잘못된 문자를 반복해서 읽으려고 시도합니다.
해결 방법
이 문제를 해결하려면 , 적절한 입력 유효성 검사 및 오류 처리를 구현해야 합니다. 다음은 이 문제를 해결하는 방법의 예입니다.
#include <iostream> #include <limits> // ... (remaining code) cout << "\nPlease enter a positive number and press Enter: \n"; do { while (!(cin >> num1)) { cout << "Incorrect input. Please try again.\n"; 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!