do-while
을 사용하여 작은 프로그램을 실행하려고합니다.do-while 루프를 완전히 실행할 수 없습니다.
#include<stdio.h>
#include<conio.h>
void main()
{
char another;
int num;
do
{
printf("Enter a number");
scanf("%d",&num);
printf("Square of %d id %d",num,num*num);
printf("Want to another another number y/n");
scanf("%c",&another);
}while(another=='y');
}
이제 프로그램을 실행하려고하면 정상적으로 실행됩니다. 숫자를 입력하면 사각형이 표시됩니다. 그런 다음 Want to enter another number y/n
을 봅니다. 그러나 어떤 키 (y 또는 n)를 누르 자마자 입력을 제공하기 위해 enter 키를 누르기 전에 프로그램이 종료됩니다. 나는 여러 번 시도했지만 성공하지 못했습니다.
그러나 사용자에게 y 또는 n 대신 1 또는 2를 입력하도록 요청하면 프로그램이 정상적으로 실행됩니다. 이 경우 정수 입력을 받아 while 블록을 확인할 수 있습니다. another == 1
인 경우 프로그램이 다시 실행됩니다.
제 문제는 while
상태의 문자를 확인할 수없는 이유입니다.
감사합니다. 당신은 정말로 나를 많이 도왔습니다. 나는 내 코드에 어떤 문제가 있는지 생각해 보았다. 넌 나를 구했다. 하지만 왜 % c 전에 공간이 필요하고 % d에 공간이 필요하지 않은지 설명해 주시겠습니까 ?? –
@ user2899258 기본적으로 줄 바꿈 문자는 유효한 문자이지만 유효한 정수가 아니기 때문에'scanf'는 형식 지정자에'[','c' 또는 @가있을 때 공백 문자 (새 줄 포함) 만 처리합니다. 'n'. 그리고'% c '앞에 공백을 추가하면'scanf'가 필요한 문자 앞에 공백을 무시하게됩니다. –