[ 문자열 함수 ]

 

스트림에 대한 이해 

 

- 연속된 데이터의 열(Line)을 의미한다.

- 입력하는 데이터나 출력하는 데이터를 입출력 순서에 의해서 순차적으로 처리되는 데이터 열(Line)

- 데이터를 이동 시킬수 있는 다리 역할을 한다.

 

이름

스트림의 종류

입 출력 장치

stdin

표준 입력 스트림

키보드

stdout

표준 출력 스트림

모니터 

stderr

표준 에러 스트림

모니터

  

 

─────────────────────────────────────────────

문자 단위 입출력 함수 

 

1) 문자 출력함수

 

 - 하나의 문자를 출력할 때 일반적으로 사용하는 함수

int putchar( int c );

int fputc( int c, FiLE* stream); /* 스트림 지정 가능   

 * 모니터 뿐만아니라 파일에도 문자를 출력할 

 * 수 있는 함수다. 

 */ 

2) 문자 입력함수

 

 - 하나의 문자를 입력할 때 일반적으로 사용되는 함수

int getchar();

int fgetc( FiLE* stream );          /* 스트림 지정 가능

                                                    * 키보드 뿐만 아니라 파일로부터도 데이터를

                                          * 입력 받을 수 있다.

                                          */ 

 

 


 

* fgetc 나 getchar() 함수가 파일의 끝에 도달하는 경우에도 EOF(-1)가 반환 된다.

* getchar() 함수는 표준 입력 함수지만, Ctrl + Z 키입력시 파일의 끝이라고 정의

 

 

─────────────────────────────────────────────

문자열 단위 입출력 함수

1) 문자열 출력함수

int puts( const char* s );                          // 자동 줄바꿈처리

int fputs( const char* s, FILE* stream ); 

 

 

2) 문자열 입력 함수

char* gets(char* s);                                // 잠재적인 문제, 쓰지말자

char* fgets(char* s, int n, FiLE* stream ); 

 


 

"fgets함수는 입력 받을 수 있는 최대 문자열의 길이 n을 초과하는 문자열이 입력되는 경우에는 n-1개까지의 문자만 입력을 받고, 마지막에 NULL문자를 삽입 해준다."

 

 

─────────────────────────────────────────────

표준 입출력 버퍼 

 

 - 표준 입 출력 함수를 사용하는 경우에는 버퍼(여분의 임시메모리 공간)을 사용하게 된다

 - 바로바로 처리하는것보다, 어느정도 쌓아 두었다가 처리를 하는것이 효율적

 

 

버퍼를 지우는 작업을 하는 fflush 함수 

 

int fflush( FILE* stream);   

 

"fflush함수를 입력스트림에 사용할경우 입력 버퍼 안의 데이터들은 모두 버려지게됨"

"fflush함수를 출력스트림에 사용할경우 출력 버퍼 안의 데이터들은 모두 즉시 출력"

 

언제 쓸까?

예를 들어 5자리를 입력받아야 하는데, 계속입력해서 10자리가 입력되었다. 이걸 fgets함수에서 읽어드릴 사이즈를 5자리로 정해놓았다면, 버퍼에는 나머지 5자리가 남아있다. 이렇게 된다면, 다시 입력을 받을때 입력버퍼에 남아있는 5자리가 밀려서 들어간다. 이때 잔챙이(?) 남아있는 버퍼를 지우고 다시 입력을 받아야 하므로 fflush로 버퍼를 비우는게 맞다.

 

─────────────────────────────────────────────

문자열 조작 함수

 

 

 

 

 

 

 

 

 

 

 

 

 

 

+ Recent posts