스트림(Stream)
모든 입력과 출력을 바이트들의 흐름으로 생각하는 개념이다. 즉 장치에 독립적으로 바이트 단위로 입출력이 이루어지는 개념을 말한다.
C언어에서는 스트림을 이용해 입출력을 지원한다. #include <stdio.h>에서 stdio는 standard input/output 의 준말이다.
표준 스트림은 프로그래머가 만들지 않아도 자동으로 생성되는데, 프로그램이 시작될 때 자동으로 만들어지고 종료될 때 자동으로 사라진다.
--> 표준스트림 : stdin (표준입력 )/ stdout (표준출력) / stderr (표준오류)
C언어는 stdin 표준 스트림을 통해 입력 장치를 다루며, stdout 표준 스트림을 통해 출력장치를 다룬다.
*scanf() 함수는 기본적으로 stdin 스트림을, printf()는 기본적으로 stdout 스트림을 사용한다.
문자 입력
C언어에서 단일문자는 char형을 이용해 표현하며, 1 byte의 메모리를. 차지하고, 작은 따옴표로 표현한다.
ex) char c = 'a';
단일 문자 입력받기
1. getchar() 함수
stdin(키보드)로부터 하나의 문자를 입력받는 함수이다.
2. fgetc() 함수
getchar() 함수와 마찬가지로 표준 입력 스트림(stdin)인 키보드로부터 하나의 문자를 입력받는 함수이다. 하지만 getchar() 함수와. 는 달리 문자를 입력받을 스트림을 인수로 전달하여 직접 지정할 수 있다. **파일 스트림과 관련이 있다
단일 문자 출력하기
1. putchar() 함수
stdout(모니터)로 하나의 문자를 출력하는 함수이다.
2. fputc() 함수
마찬가지로 모니터에 하나의 문자를 출력하는 함수이지만, 스트림을 인수로 전달하여 직접 지정할 수 있다.
EOF(End Of File)
C언어는 운영체제와 상관없이, 파일의 끝에 도달했을 때 언제나 특별한 값을 반환하도록 하는데, 그 값을 EOF라고 한다. (-1을 나타냄)
파일뿐만 아니라 키보드를 통한 입력 시에도 입력의 끝을 알려주는 방법이 필요하기 때문에 유닉스 시스템은 Ctrl + D/ 윈도우 시스템에선 Ctrl + Z 후 Enter 를 발생시킬 수 있다.
문자열 입출력
C언어는 다른 언어들과 달리 공식적으로 String(문자열) 자료형을 !제공하지 않는다! (왜????)
따라서 문자열을 처리하기 위해선 char형의 배열을 선언하여야만 하고, 문자열은 문자와 달리 큰 따옴표로 감싼다.
ex) char str[10] = "Tell me why"; // str[] 로 선언하여 크기를 지정하지 않을 수 있다.
NULL 문자
문자열 배열이 선언된 크기는 실제 문자열의 길이와 대개 다르다.
예로 들어, char name[20] = "Alexander Lisa" 라는 선언문에서 20 바이트가 할당되었지만 실제로 유의미한 문자가 저장된 공간은 공백문자를 포함하여 14바이트이다.
대부분의 문자열은 저장공간이 남기 때문에 문자열의 끝이 정의되어 있지 않다면, 프로그램은 실제 유의미한 문자열의 일부와 쓰레기값을 서로 구분하지 못할 것이다. 그러므로 문자열에 속한 데이터가 끝나면, 문자열의 끝을 의미하는 문자인 널(NULL) 문자를 하나 삽입한다.(('\0')으로 표시하고 아스키코드 값은 0 )
'2학년 > C' 카테고리의 다른 글
[C] 입출력 (0) | 2023.08.03 |
---|---|
[C]문자와 문자열(2) (0) | 2023.08.02 |
[C]함수(2) (0) | 2023.07.31 |
[C]함수(1) (0) | 2023.07.30 |
[C]사용자 지정 타입 (0) | 2023.07.29 |