c언어 문자 입출력 함수
c언어 문자 입출력 함수
지난 글에서 데이터의 흐름을 의미하는 스트림에 대해서 알아봤었는데요. 그를 바탕으로 문자 단위의 입출력 함수인 putchar, fputc, getchar, fgetc 함수에 대해서 알아보겠습니다.
■ 먼저 하나의 문자를 출력하는 함수는 putchar(int c)와 fputc(int c, FILE*stream) 함수인데요. putchar는 표준 출력 스트림 stdout으로 전송하는 함수입니다. 즉, 인자로 전달된 문자를 모니터에 출력하는 역할을 하게 되는 거고요. fputc 함수는 두 번째 인자로 문자를 전송할 스트림을 정해줄 수 있고 표준 스트림뿐만 아니라 파일로 데이터를 전송할 수도 있습니다. 자세한 내용은 나중에 파일 입출력 단원에서 다시 정리하기로 하고 아래쪽에서 만들어볼 예제에서는 두 번째 인자에 표준 스트림을 지정해주겠습니다. 그렇게 하면 putchar 함수와 같이 모니터에 하나의 문자를 출력하는 역할을 하게 됩니다.
■ 다음은 하나의 문자를 입력하는 함수인데요. getchar(void)와 fgetc(FILE*stream) 함수입니다. getchar()은 표준 스트림, 즉 키보드로부터 하나의 문자를 입력받는 함수이고 gfetc 또한 문자를 입력받는 함수이지만 스트림을 지정해줄 수 있는 차이점이 있습니다. 여기서는 이 또한 표준 스트림으로 지정해서 getchar와 같이 키보드에서 문자를 입력받는 역할을 하도록 하겠습니다.
정리한 내용들을 확인하기 위해서 간단한 예제를 하나 만들어봅니다.
▲ 변수 a와 b에 표준 스트림으로 하나의 문자를 입력받고 다시 출력하고 있는 과정인데요. a와 b에 각각의 문자가 저장이 되기 때문에 두 개의 문자를 입력받아야 할 것 같지만 한 개만 입력하고 엔터키를 누르니까 입력한 문자 하나만 출력되버립니다. 이는 '엔터'도 아스키코드값이 10인 문자이기 때문입니다. 즉, a에는 문자 c가 저장되고 b에는 엔터 값이 저장 및 출력되고 있는데 엔터는 눈에 보이지 않을 뿐입니다.
이렇게 문자 입출력 함수의 기본 개념을 알아봤는데요. 혹시 눈치 채신 분도 계실지 모르겠지만 문자를 저장하는데 왜 char가 아닌 int 변수에 저장을 할까요? 이 내용은 다음 글에 이어서 정리하겠습니다. 수고하셨어요.^^