본문 바로가기

Programming/C Language

문자,문자열 관련 함수

프로그램상에서 문자열 표현 및 처리는 매우 중요하다.
인간에게 전달되는 정보의 대부분이 문자열로 표현되기 때문이다.
때문에 C언어에서 이들과 관련된 표준함수들이 다수 정의되어 있는데
이번에는 이러한 표준함수들을 정리해보자!        (추후 파일입출력 파트에서 바탕을 이룸.)

이번 파트에는 단순히 몇개의 함수를 공부하는 정도가 아니라 데이터의 이동 경로를 의미하는 "스트림"

그리고 이를 기반으로 하는 "데이터 입출력"에 대해 개념적으로 이해하자

입력 이란 프로그램을 중심으로 프로그램 안으로 데이터가 흘러 들어오는 것을 의미하고
출력은 반대로 프로그램 밖으로 데이터가 흘러 나가는 것을 의미한다.


대표적인 입력장치로는 키보드가 있고 출력장치로는 모니터 등이 있다.

우리가 구현하는 프로그램들은 입력장치들과 기본적으로 연결되어 있는 개체가 아닌 서로 떨어져 있는 개체다.

따라서 프로그램상에서 모니터,키보드등을 대상으로 데이터 입출력을 하기위해 이들을 연결시켜주는 다리를 " 스트림"이라고 한다.


이러한 외부장치와 프로그램과의 데이터 송수신의 도구가 되는 스트림은 운영체제(Operating System)이 제공한다.


이번엔 '표준 스트림'에 대해 알아보자


표준 스트림은 3가지로 나뉘어진다.


stdin        표준 입력 스트림                키보드 대상으로 입력


stdout      표준 출력 스트림                모니터 대상으로 출력


stderr       표준 에러 스트림                모니터 대상으로 출력


(stdout와 stderr는 모니터를 대상으로 출력이 이뤄진다는 점에서 차이가 없다 , 하지만 이후에 리눅스나 유닉스에서 I/O Redirection 개념을 공부하면서 둘의 용도를 구분할 수 있을 것이다.)




첫번째로 , 문자 출력 함수를 알아보자

모니터로 하나의 문자를 출력할 때 일반적으로 사용하는 두 함수는 다음과 같다.


#include<stdio.h>

int putchar(int c);

int fputc(int c, file * stream); 

   

두 함수 모두 인자로 전달된 문자정보를 모니터에 출력하는 기능을 가지고있다. 다만 fputc 함수는 문자를 전송할 파일스트림을 지정할 수 있다.
fputc를 이용하면 stdout뿐 아니라 파일을 대상으로도 데이터를 전송할 수 있다.

fputc의 두번째 매개변수 stream은 문자를 출력할 스트림 지정에 사용된다. 이 인자에 stdout을 전달하면 fputc와 동일한 함수가 된다.


문자 입력 함수
키보드로부터 하나의 문자를 입력받을 때 일반적으로 사용하는 두 함수

#include<stdio.h>

int getchar(void);

int fgetc(file * stream);


getchar함수는 stdin으로부터 하나의 문자를 입력받아 반환하는 함수이다. ( 키보드로부터 하나의 문자만 입력받는 함수)
fgetc함수 또한 하나의 문자만 입력받는 함수. 다만 , 문자를 입력받을 스트림을 지정할 수 있음.

위 4개의 함수를 예제를 통해 알아보자





7행과 8행 에선 getchar()함수 , fgetc함수를 통해 문자 하나를 입력받는다 , 


10,11행에서는 putchar , fputc함수를 통해 입력받은 문자를 출력한다.




언뜻 보면 하나의 문자 (5) 만 입력받고 출력한듯 보이지만
fgetc 함수를 통해서는 enter키를 입력받았다 , 엔터 키 또한 \n으로 표현되는 문자다.
따라서 입출력의 대상이 된다.


'Programming > C Language' 카테고리의 다른 글

구조체 예제  (0) 2017.11.01
구조체 ( Structure )  (0) 2017.11.01
다차원 배열  (0) 2017.11.01
Call By Value & Call By Reference  (0) 2017.11.01
포인터 배열  (0) 2017.11.01