프로그래밍/C언어.
문자 입.출력 함수(putchar, fputc, getchar, fgetc)
K_Coder
2011. 3. 28. 22:58
stdin(표준 입력 스트림), stdout(표준 출력 스트림), stderr (표준 에러 스트림)
stdin은 키보드로 입력 받는 것.
stdout는 모니터로 출력 하는 것.
stderr은 에러를 출력 하는 것.(모니터로)
문자 출력 함수의 원형.
int putchar (int c);
int fputc(int c, FILE * stream);
putchar, fputc 모두 하나의 문자를 출력할 때 일반적으로 사용하는 함수이다.
차이점은 putchar은 모니터로 출력하지만, fputc는 출력 스트림을 지정할 수 있다는 것.
즉, file로 출력 할 수도 있고, 모니터로 출력할 수도 있다.
문자 입력 함수의 원형.
int getchar(void);
int fgetc(FILE* stream);
getchar, fgetc 모두 하나의 문자를 입력할 때 일반적으로 사용하는 함수이다.
차이점은 putchar은 키보드로 입력 하지만, fputc는 입력 스트림을 지정할 수 있다는 것.
즉, file로 부터 입력 받을 수도 있고, 키보드로 입력 받을 수도 있다.
EOF란?
fputc, fgetc 처럼 파일로 부터 입력 받거나 파일로 출력하는 일이 생기는데
EOF의 실제 값은 -1이며, 파일의 끝에 도달했을 때 반환한다.
즉, 파일의 끝까지 다 읽어들이면 반환되는 값이다. 키보드로 입력 받는 경우는
Ctrl + Z 를 입력하면 파일의 끝이라고 정의 되어 있다.
간단한 사용 예제 (Ctrl + z를 입력 할 때까지 입력하는 문자를 출력하기)
stdin은 키보드로 입력 받는 것.
stdout는 모니터로 출력 하는 것.
stderr은 에러를 출력 하는 것.(모니터로)
문자 출력 함수의 원형.
int putchar (int c);
int fputc(int c, FILE * stream);
putchar, fputc 모두 하나의 문자를 출력할 때 일반적으로 사용하는 함수이다.
차이점은 putchar은 모니터로 출력하지만, fputc는 출력 스트림을 지정할 수 있다는 것.
즉, file로 출력 할 수도 있고, 모니터로 출력할 수도 있다.
문자 입력 함수의 원형.
int getchar(void);
int fgetc(FILE* stream);
getchar, fgetc 모두 하나의 문자를 입력할 때 일반적으로 사용하는 함수이다.
차이점은 putchar은 키보드로 입력 하지만, fputc는 입력 스트림을 지정할 수 있다는 것.
즉, file로 부터 입력 받을 수도 있고, 키보드로 입력 받을 수도 있다.
EOF란?
fputc, fgetc 처럼 파일로 부터 입력 받거나 파일로 출력하는 일이 생기는데
EOF의 실제 값은 -1이며, 파일의 끝에 도달했을 때 반환한다.
즉, 파일의 끝까지 다 읽어들이면 반환되는 값이다. 키보드로 입력 받는 경우는
Ctrl + Z 를 입력하면 파일의 끝이라고 정의 되어 있다.
간단한 사용 예제 (Ctrl + z를 입력 할 때까지 입력하는 문자를 출력하기)
#include <stdio.h>
void main()
{
char ch=0;
while(ch != 'EOF')
{
ch = getchar(); //fgetc(stdin)과 동일
putchar(ch); //fputc(ch, stdout)과 동일.
}
}
getchar, getch, getche 차이점.
3가지의 종류가 있다. 차이가 뭘까? 어떻게 보면 사실 결과는 같을 수도 있다.
일단. 버퍼의 사용 여부의 차이.
버퍼를 사용하는 경우. 입력을 하면 바로 들어가는게 아니라 버퍼에 담긴다.
그 후 종료를 하게 되면 내용이 들어가게 되는데, 때문에 잘못 입력해도 엔터를 치기 전엔 수정 가능.
하지만, 버퍼를 사용하지 않는 getch, getche 의 경우 잘못 입력하고 백스페이스를 누르면
삭제되기는 커녕 백스페이스값이 들어간다..- -;;
그리고 화면표시의 차이.
단순하다. getch의 경우 입력한 값이 화면에 나타나지 않는다. - -;
getch를 반복해서 여러개 받는다고 해도, 화면에는 나타나지 않는다.
getche의 경우 화면에 출려된다. 이를 ehco 라고 하며 앞자를 딴 e가 붙는다고 한다.
getch, getche를 반복문으로 통해 사용하다가 끝내고 싶다면 '\r'을 사용해야 한다.
getchar, getch, getche 차이점.
3가지의 종류가 있다. 차이가 뭘까? 어떻게 보면 사실 결과는 같을 수도 있다.
비교 |
getchar() |
getche() |
getch() |
버퍼 사용 |
O |
X |
X |
화면 표시 |
O |
O |
X |
종료 인식 |
\n |
\r |
\r |
버퍼를 사용하는 경우. 입력을 하면 바로 들어가는게 아니라 버퍼에 담긴다.
그 후 종료를 하게 되면 내용이 들어가게 되는데, 때문에 잘못 입력해도 엔터를 치기 전엔 수정 가능.
하지만, 버퍼를 사용하지 않는 getch, getche 의 경우 잘못 입력하고 백스페이스를 누르면
삭제되기는 커녕 백스페이스값이 들어간다..- -;;
그리고 화면표시의 차이.
단순하다. getch의 경우 입력한 값이 화면에 나타나지 않는다. - -;
getch를 반복해서 여러개 받는다고 해도, 화면에는 나타나지 않는다.
getche의 경우 화면에 출려된다. 이를 ehco 라고 하며 앞자를 딴 e가 붙는다고 한다.
getch, getche를 반복문으로 통해 사용하다가 끝내고 싶다면 '\r'을 사용해야 한다.
유익한 정보가 되셨다면 아래의 추천도 부탁드려요 ^-^