C언어에서 입출력 함수는 표준 입출력함수와 파일 입출력함수로 나뉩니다. 파일 입출력은 외부에서 값을 입력받거나 저장하는 반면에 표준 입력함수는 일반적으로 키보드의 입력을 받고 표준 출력함수는 일반적으로 모니터에 출력을 하게됩니다.
위 예제를 보면 int형 변수 ch에 문자 하나를 입력받아 문자 하나를 출력하게 됩니다. 이때 왜 char형을 나두고 int형으로 받는가 하면 getchar()와 putchar()함수는 함수의 호출을 실패했거나 Ctrl + Z키가 입력을 받으면 EOF(End Of File)이라는 -1의 수를 반환하는데 char의 형태로 받게되면 char를 unsigned char로 인식하는 컴파일러도 있기 때문에 -1을 정확히 보관한다고 보장할 수 없습니다.
왜 C언어에서 가장 많이 쓰는 scanf()와 printf()를 나두고 왜 문자 하나 밖에 받지 못하는 getchar()와 putchar()를 쓰냐면 getchar()는 scanf()에 비해 훨씬 적은 메모리를 차지하는데 (putchar()와 printf()도 마찬가지) 많은 값을 원하는것도 아니고 하나의 문자를 원한다면 getchar()를 사용하여 더 효율적으로 짜기 위해서 입니다.
#include <stdio.h> void main() { char str[10]; gets(str); // \0(널 문자) 제외 9문자 저장 puts(str); // \0이 나올때 까지 출력하고 개행 }
getchar는 문자하나를 받는 반면에 gets는 문자열을 입력받게 됩니다.
위 두 예제를 보면 둘 다 #include <stdio.h>가 보이는데 이 뜻은 stdio.h(표준입출력이 들어있는 헤드파일)를 이 프로그램과 합치라는 것 입니다.