isdigit
을 사용할 수 없습니다. 여기 내 코드 중 일부입니다.왜 isdigit은 항상 false를 반환합니까?
void input(int *array, int size) {
int x;
printf("Give me ten numbers. \n");
for (int i = 0; i < size; i++) {
do {
printf("Array[%d]: ", i);
scanf("%d", &x);
scanf("%*[^\n]");
} while (!isdigit(x));
array[i] = x;
}
}
이 프로그램의 목적은 (아무 문제가없는) scanf
와 키보드의 정수를 읽는 것입니다. 입력이 숫자가 아닌 경우 사용자가 숫자를 제공 할 때까지 while 루프를 반복해야합니다. isdigit
을 사용하면 문자가 정수인지 여부를 확인할 수 있습니다. 정수이면 1을, 그렇지 않으면 0을 반환합니다. 적어도 그것은 그렇게해야합니다. 이 코드에서 항상 0
은 무엇 "작동하지"않는 말은, 너에게? 결과와 예상되는 결과를 설명하십시오. 또한 I/O는 다음과 같은 사실을 기억해야한다 :'scanf()'의 반환 값을 확인해야한다. – unwind
이 코드의 목적은 무엇입니까? – RoadRunner
디버깅 도움말을 찾는 질문 ("이 코드가 작동하지 않는 이유는 무엇입니까?")에는 원하는 동작, 특정 문제 또는 오류 및 질문 자체에서이를 재현하는 데 필요한 가장 짧은 코드가 포함되어야합니다. 분명한 문제 성명이없는 질문은 다른 독자에게 유용하지 않습니다. See : 최소한의 완전하고 검증 가능한 예제를 만드는 방법. – Olaf