goto문을 피하는 방법
컴퓨터는 반복문, 분기문등을 실행할때 goto문의 실행방식처럼 작동하지만 인간이 보기에는 직관적이지 않으므로 if, while문으로 바꿔서 코드 작성하라.
가능하면 goto문을 사용하지 말도록 권장하고 있음.
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
8.1 입출력 버퍼
getchar()나 putchar()등을 이용할때 다른 방식으로 실행되던 부분에 대해 설명하겠다.
예제를 보자.
getchar()와 putchar()는 입력한 대로 한글자씩 바로 출력되어야 하는 것 처럼 보임.
#define _crt_secure_no_warnings
#include <stdio.h>
#include <conio.h>
int main()
{
char c;
while ((c = _getche()) != '.')
putchar(c);
return 0;
}
위의 예제코드에선 그렇게 작동한다.(버퍼가 없는 방식의 실행 결과 도출하는 코드)
하지만 버퍼가 있는 경우에는 abc라고 입력받으면 한글자씩 버퍼에 저장되고, 버퍼에서 한꺼번에 출력된다.
왜 버퍼가 생겼냐면, cpu연산속도를 입출력장치가 버텨내지 못하기 때문에(병목현상) 버퍼를 중간에 두어서 두 장치간의 속도를 맞추려는 시도에서 생김.
언제 출력되냐? 버퍼가 가득 찼을때(대략 512byte) or ‘\n’등 escape sequence가 입력되었을 때(enter키 입력) 등이다.
나중 파일 입출력을 다루면서 더 배울 것이다.