사용자 인터페이스는 친절하게
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
int count = 0;
while (1)
{
printf("Current count is %d, Continue? (y/n)", count);
if (getchar() == 'n')
break;
while (getchar() != '\\n')
continue;
count++;
}
return 0;
}
예제코드
‘continue’명령어가 잘 기억안나서 지난 강의를 살펴봤음. 집 컴 로컬에 워드로 저장한 내용이라 없었음. continue는 해당 조건을 만족할 경우 아래의 문을 실행시키지 않고 다시 루프문으로 돌아가는 명령어임.
위 예제코드에서 continue는 Escape sequence가 아닐 경우 즉, 엔터키를 입력하지 않은 경우 해당 while문에서 탈출하지 못하게 만듦. 즉 엔터를 입력했을때만 count++를 작동하게 만듦.
이는 ‘yyyyy’등의 여러 문자를 버퍼에 입력했을때 계속 while문에서 돌게 만드는 역할(프로그램이 끝나지 않게 하고, count++도 하지 않게 하는 역할)도 함.
만약 ‘nnnnn’을 입력하면(엔터를 치는 순간)
while (getchar() != '\\n')
`continue;`
구문에 오기도 전에 breake가 끝내버림.
위의 구문이 없으면 ‘y’을 입력후 엔터키를 치면 엔터키도 ‘\n’으로 인식되서 count++가 두번 되버림.
사용자는 프로그래머의 의도대로 절대로 행동하지 않는다. 일부러 짓궂게 행동하는 사람들도 있음. 그런 경우들을 모두 꼼꼼하게 제어할 수 있어야 한다.
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
int count = 0;
while (1)
{
printf("Current count is %d, Continue? (y/n)", count);
int c = getchar();
if (c == 'n')
break;
else if (c == 'y')
{
while (getchar() != '\\n')
continue;
count++;
}
else
{
printf("Plese input y or n\\n");
while (getchar() != '\\n')
continue;
}
}
return 0;
}
사용자가 y나 n이외의 값을 넣었을때 안내문을 추가했다. 우선 사용자의 입력값을 저장할 변수 c를 생성하고(int c = getchar();)
이후 if / else if / else문으로 각각 n, y, 이외의 값을 넣었을때의 출력을 처리했음.
그 다음에 프로그래밍 팁으로 알려주면, 위 코드처럼 같은 기능을 하는 코드가 중복될 경우(while(getchar() ≠ ‘n’)