일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 동적 프로그래밍
- 1로 만들기
- Servlet
- 양꼬치
- BFS
- mvc
- 포두부 보쌈
- 고모네 콩탕
- 완도산회
- 스프링
- 호유동
- 2638
- 투어
- 백준
- 맛집
- 스프링 MVC
- 설탕 배달
- 2589
- dp
- 다이나믹 프로그래밍
- 맛집 투어
- 알고리즘
- Spring
- 2020 KAKAO BLIND
- HTTP API
- 프로그래머스
- 문자열 압축
- 쓰레드 풀
- 서블릿
- 2839
- Today
- Total
프로그래밍 공방
C/C++ 입출력 정리 본문
ㆍC/C++의 여러가지 입출력 방식
printf("Hello World!");
scanf("%d", num);
int putchar(int c);
int fputc(int c, FILE * stream);
int getchar(void);
int fgetc(FILE * stream);
int puts(const char *s);
int fputs(const char *s, FILE * stream);
char * gets(char *s);
char * fgets(char *s, int n, FILE * stream);
std::cout << 내용;
std::cin >> 변수;
ㆍ스트림
구현하는 프로그램과 입력장치, 출력장치는 기본적으로 연결되어 있는게 아닌, 서로 떨어져 있는
개체이다.
따라서 프로그램상에서 입,출력 장치를 대상으로 데이터를 입출력 하기 위해서는
이들을 연결시켜 주는 다리가 필요하다.
이러한 다리의 역할을 하는 매개체를 가리켜 '스트림(stream)' 이라고 한다.
ㆍ입출력 버퍼(buffer)
입출력 함수를 통해서 데이터를 입출력 하는 경우, 해당 데이터들은 운영체제가 제공하는
'메모리 버퍼'를 중간에 통과하게 된다.
입력된 데이터는 엔터 키가 눌렸을 때 입력 스트림을 거쳐서 입력 버퍼로 들어가게 되는데
데이터를 바로 전송하지 않고 중간에 입출력 버퍼를 둬서 데이터를 임시 저장하는 이유는
'데이터 전송의 효율성'과 관련이 있다.
키보드나 모니터와 같은 외부 장치와의 데이터 입출력은 생각보다 시간이 걸리는 작업이기 때문에
버퍼링 없이 정보를 목적지로 바로 이동시키는 것보다 중간에 메모리 버퍼를 둬서
데이터를 한데 묶어서 이동시키는 것이 보다 효율적이고 빠르다.
ㆍ문자 단위 입출력 함수(putchar, fputc, getchar, fgetc)의 존재 이유
printf와 scanf 함수는 서식지정을 통해서 새로운 입출력의 형태를 구성하는 함수인데
이렇게 화려한 기능을 제공하는 함수는 그에 따른 대가가 요구된다.
화려한 기능을 제공하는 만큼 사용하는 메모리 공간도 크고, 해야 할 연산의 양도 많아서
상대적으로 속도가 느리다.
따라서 단순히 문자 하나를 입출력 하는 것이 목적이라면 위의 함수들을 사용하는 것이 낫다.
<입출력에서의 스트림과 버퍼 ( 검은색 화살표 : 스트림 )>
'개발 > c++' 카테고리의 다른 글
c/c++ 문자열 입력 (0) | 2017.10.12 |
---|---|
cout과 printf (0) | 2017.10.10 |