저는 초급 프로그래머입니다. 나는 플로트 숫자 나 문자를 입력하지 못하게하는 기능을 가지고있다. 그것은 gcc가 3.4.2와 잘 작동했지만 지금은 4.7.1로 업데이 트하고 제대로 작동하지 않습니다. 이제 첫 번째 입력 a [0]에서만 작동합니다. 입력 한 내용이 'x'라고하면 '잘못된 입력'이 표시되지만 [1]에 대해 '1'을 입력 한 다음 [1]에 'x'를 입력해도 입력 확인 및 a [1]에 '1'을 할당; 이 문제를 어떻게 해결할 수 있습니까? 고맙습니다!C, 다른 GCC, fflush()가 작동하지 않습니까?
void initArray(unsigned int a[]) {
double q;
int x, c;
for (x = 0; x < SIZE; x++){
printf("a[%d] ", x);
printf("Enter number: ");
scanf("%lf", &q);
if (q == (unsigned int) q) {
printf("Input OK.\n");
a[x] = q;
fflush(stdin);
}
else {
printf("Wrong Input\n");
fflush(stdin);
x--;
}
}
printf("\n");
}
당신은 당신의 코드를 debuging 시도? 또는 적어도 어떤 종류의 벌채? –
_ 주어진 스트림이 입력 유형 인 경우 함수의 동작은 undefined입니다. _ : http://en.cppreference.com/w/c/io/fflush – hmjd
배열의 부호없는 정수는 사용자가 int wgy에서 더블 읽기?! "% u"표준에서 부호없는 int를 직접 읽지 않는 이유 – MOHAMED