올바른 값으로 입력을 확인해야하는 프로그램을 만들고 있지만 불행히도 잘못된 것을하고 있습니다. 이 프로그램은 대답이 1 또는 0이면 입력 값을 10 번 확인해야합니다. 그렇지 않으면 대답을 다시 요청해야합니다. 입력이 끝나면 printf에 의해 정답을 보여 주기로되어 있지만 그렇지 않습니다.C (및 루프)의 입력 유효성 확인
내 생각에 '스위치 케이스'부분에 문제가있는 것 같습니다. 도와 주시면 감사하겠습니다!
내 코드 :
int main()
{
char a0, a1, a2, a3, a4, a5, a6, a7, a8, a9;
char c = '0';
int a = 0, OK = 0, check = 0, valid_input = 0, a_ok;
printf("Fill in a value 1 or 0.\n\n");
while (a < 10)
{
while (valid_input == 0)
{
printf("Fill in a%d: ", a);
a_ok = scanf("%d", &OK);
if (a_ok != 1)
{
scanf("%s", &c);
}
else if (OK <0 | OK >1)
{
do
{
while (check == 0)
{
printf("Fill in a%d: ", a);
check = check +1;
}
c = getchar();
}
while (!isdigit(c));
ungetc(c, stdin);
}
else
valid_input = 1;
}
switch (a)
{
case 0:
OK = a0;
case 1:
OK = a1;
case 2:
OK = a2;
case 3:
OK = a3;
case 4:
OK = a4;
case 5:
OK = a5;
case 6:
OK = a6;
case 7:
OK = a7;
case 8:
OK = a8;
case 9:
OK = a9;
}
a = a +1;
}
/*
printf("Fill in a1: "); **<--- WANT TO REMOVE THIS PART BY LOOP**
scanf("%d", &a1);
printf("\nFill in a2: ");
scanf("%d", &a2);
printf("\nFill in a3: ");
scanf("%d", &a3);
printf("Fill in a4: ");
scanf("%d", &a4);
printf("\nFill in a5: ");
scanf("%d", &a5);
printf("Fill in a6: ");
scanf("%d", &a6);
printf("\nFill in a7: ");
scanf("%d", &a7);
printf("\nFill in a8: ");
scanf("%d", &a8);
printf("Fill in a9: ");
scanf("%d", &a9);
*/
printf("\n%d\n%d\n%d\n%d\n%d\n%d\n%d\n%d\n%d\n%d", a0,a1,a2,a3,a4,a5,a6,a7,a8,a9);
getch();
return(0);
}
배열을 aX – thumbmunkeys