문제 출처 : http://jungol.co.kr/bbs/board.php?bo_table=pbank&wr_id=29&sca=1060
이러한 문제를 제가 코드를 짜서 실행했는데
#include <stdio.h>
int main(void)
{
float base, height;
char c;
while(1)
{
printf("Base = ");
scanf("%f", &base);
printf("Height = ");
scanf("%f", &height);
printf("Triangle width = %.1f \nContinue? ", base*height / 2);
scanf("%c", &c);
if (c != 'Y' && c != 'y') break;
}
return 0;
}
scanf("%c",&c)를 입력하기 전에 이미 \n이 입력되었다고 하면서 프로그램이 끝납니다
scanf(" %c",&c)로 할 때는 문제가 원하는대로 작동이 됩니다.
1. char c에 \n이 입력된 이유가 위의 printf문의 Continue?(space bar) 때문에 스페이스바를 입력으로 받은 건가요?
2. height를 입력하고 enter를 칠 때 enter 가 입력된걸까요?
1번은 printf는 출력만하는데 scanf에 영향을 줄 것 같지는 않고
2번은 제가 알기로 c언어는 윗줄부터 실행이 되는데 이미 c에 입력되는 것이 이상하고
원인이 뭘까요..?