먼저 불량한 영어로 죄송합니다. 나는 많은 웹 사이트에서이 질문에 대한 참고로 많은 서핑을하고 있었지만 아직 정확한 대답을 찾지 못했습니다.C 프로그래밍 - "공간 (& # 32)"입력을 허용/확인/확인
사용자가 정수를 입력하지 않은 경우이 프로그램에서 확인할 수있는 C 프로그램을 만들려고합니다. 사용자가 정수를 입력하지 않은 경우 사용자가 프로그램에 정수를 입력하라는 등의 프롬프트가 다시 표시됩니다. scanf() 반환 값을 조건문에 사용할 때 모두 괜찮지 만 문제는 '공백/공백/공백'(아스키 코드 & # 32)을 입력하고 '입력'을 누르면 내 프로그램이 계속 실행됩니다. 사용자 입력을 위해 문자 또는 정수를 기다리는 것.
입력이 'whitespace/blackspace/space'인 경우 프로그램은 사용자에게 정수를 입력하라는 메시지를 반복하거나 프로그램이 중지되기를 바란다. 나는 C에서 초보자,이 궁금합니다
#include <stdio.h>
int main() {
int number, isInt;
printf("Input a number : ");
do {
if ((isInt = scanf("%d", &number)) == 0) {
printf("retry : ");
scanf("%*s");
} else if (number < 0) {
printf("retry : ");
}
} while (isInt == 0 || number < 0);
printf("%d\n", number);
return 0;
}
: 여기
케이스 코드입니다. 나는 % [^ \ n] < - scanf() 문자열에 대한 코드 형식을 사용하고이를 정수로 변환하면 프로그램이 올바르게 실행된다는 것을 안다. % d 코드 형식을 사용하여이 문제를 해결할 다른 방법이 있습니까? 또는 scanf()를 사용합니까? 공백을 무시하고 그것이 변환을 수행하기 전에 비 공백을 찾을 때까지 계속 찾고 것이다 D
는 scanf()를 같은 것을 처리하지 않습니다 http://stackoverflow.com/questions/6582322/what-does-space-in-scanf-mean에 대한 답변을 참조하십시오. 시도해보십시오. http://stackoverflow.com/questions/3765023/how-do-i-read-white-space-using-scanf-in-c?rq=1 – Toby
'scanf ("% 1을 (를) 통해 문자를 하나씩 읽습니다. c ", & character)'그리고 읽은 문자열을 정수로 변환하는 것은 하나의 해결책입니다. 'scanf()'를 사용하지 않아도된다면, getchar()가 더 유용 할 것이다. – MikeCAT