본문 바로가기
Programming

C 문자열 함수 정리

by minjunkim.dev 2020. 8. 24.

# C 대표적 문자열 처리 함수 헤더파일

1. string.h

2. ctype.h


char * gets ( char * str );

- 표준 입력(stdin)에서 문자를 읽고 개행문자나 파일 끝에 도달 할 때까지 str에 C 문자열로 저장
- 개행 문자가 발견되면 str에 복사되지 않음
- 널 문자는 str에 복사 된 문자 뒤에 자동으로 추가

 

* 매개변수

- char * str
읽은 문자열을 C 문자열로 복사할 메모리 블록을 가리키는 포인터

* 반환 값(char *)

성공하면 함수는 인자로 넘긴 포인터를 반환
오류가 발생하면 null 포인터 반환


int puts ( const char * str );

- str이 가리키는 C 문자열을 표준 출력(stdout)에 쓰고 개행문자를 추가
- 함수는 널 문자에 도달 할 때까지 지정된 주소(str)에서 복사를 시작

- 널 문자는 스트림에 복사되지 않음

 

* 매개변수

- const char * str
출력할 C 문자열

* 반환 값(int)

성공하면 음수가 아닌 값을 반환
오류가 발생하면 EOF를 반환


size_t strlen ( const char * str );

- C 문자열 str의 길이를 반환
- C 문자열의 길이는 종료 널 문자에 의해 결정

- C 문자열은 문자열의 시작과 종료 널 문자 사이의 문자 수(널 문자 자체는 포함하지 않음

 

* 매개변수

- const char * str

C 문자열

 

* 반환 값(size_t)

인자로 넘긴 문자열의 길이 반환


char * strcpy ( char * destination, const char * source );

- 널 문자를 포함하여 source가 가리키는 C 문자열을 destination이 가리키는 배열(destination)에 복사

 

* 매개변수

- char * destination

source 문자열을 복사 할 destination 배열에 대한 포인터

- const char * source

복사 할 C 문자열

 

* 반환 값(char *)

destination 반환


char * strncpy ( char * destination, const char * source, size_t num );

- soruce의 처음 num개의 문자를 destination에 복사

- num개의 문자가 복사되기 전에 source C 문자열의 끝(널 문자로 표시됨)이 발견되면,

총 num개의 문자가 기록 될 때까지 destination이 0으로 채워짐
- source가 num보다 길면 destination 끝에 널 문자가 암시적으로 추가되지 않음

따라서, 이 경우 destination은 널 문자로 끝나는 C 문자열로 간주되지 않음
- destination과 sourcer가 겹치지 않아야 함

 

* 매개변수
- destinaton
콘텐츠를 복사 할 destination 배열에 대한 포인터
- source
복사 할 C 문자열
- num
소스에서 복사 할 최대 문자 수
size_t는 부호없는 정수

* 반환 값(char *)
destination 반환


char * strcat ( char * destination, const char * source );

- source 문자열의 복사본을 대상 문자열에 추가

- destination의 널 문자는 source의 첫 번째 문자로 겹쳐 쓰여지고

destination 둘 다의 연결로 형성된 새 문자열 끝에 널 문자가 포함

- destination과 source가 겹치지 않아야 함

 

* 매개변수
- destinaton

C 문자열을 포함해야하며 연결된 결과 문자열을 포함할만큼

충분히 큰 대상 배열에 대한 포인터
- source
추가 할 C 문자열, destination과 겹치지 않아야 함

* 반환 값(char *)
destination 반환


char * strncat ( char * destination, const char * source, size_t num );

- source의 처음 num개의 문자를 대상에 추가하고 널 문자를 추가
- source의 C 문자열 길이가 num 보다 작으면 널 문자까지의 내용만 복사

 

* 매개변수
- destinaton

C 문자열을 포함해야하며 연결된 결과 문자열을 포함할만큼

충분히 큰 대상 배열에 대한 포인터

- source
추가 할 C 문자열, destination과 겹치지 않아야 함

- num

추가 할 최대 문자 수
size_t는 부호없는 정수


* 반환 값(char *)
destination 반환


int strcmp ( const char * str1, const char * str2 );

- C 문자열 str1을 C 문자열 str2와 비교
- 각 문자열의 첫 번째 문자를 비교하기 시작.

서로 같으면 문자가 다를 때까지 또는 널 문자에 도달 할 때까지 다음 쌍으로 계속됨

 

* 매개변수

- str1

비교할 C 문자열

- str2

비교할 C 문자열

 

* 반환 값(int)

문자열 간의 관계를 나타내는 정수 값을 반환

< 0 : 일치하지 않는 첫 번째 문자는 ptr2보다 ptr1에서 더 낮은 값(사전 순서상 앞)

0 : 두 문자열의 내용이 동일

> 0 : 일치하지 않는 첫 번째 문자는 ptr2보다 pt1에서 더 큰 값(사전 순서상 뒤)


int strncmp ( const char * str1, const char * str2, size_t num );

- C 문자열 str1의 최대 num개의 문자를 C 문자열 str2의 문자와 비교
- 각 문자열의 첫 번째 문자를 비교하기 시작.

서로 같으면 문자가 다를 때까지, 널 문자에 도달 할 때까지 (둘 중 먼저 발생하는 경우) 또는

두 문자열에서 num 문자가 일치 할 때까지 다음 쌍으로 계속됨

 

* 매개변수

- str1

비교할 C 문자열

- str2

비교할 C 문자열

- num

비교할 최대 문자 수
size_t는 부호없는 정수

 

* 반환 값(int)

문자열 간의 관계를 나타내는 정수 값을 반환

< 0 : 일치하지 않는 첫 번째 문자는 str2보다 str1에서 더 낮은 값(사전 순서상 앞)

0 : 두 문자열의 내용이 동일

> 0 : 일치하지 않는 첫 번째 문자는 str2보다 str1에서 더 큰 값(사전 순서상 뒤)


const char * strchr ( const char * str, int character );
      char * strchr (       char * str, int character );

- C 문자열 str에서 첫 번째 문자에 대한 포인터를 리턴
- 널 문자는 C 문자열의 일부로 간주. 따라서 문자열 끝에 대한 포인터를 검색하기 위해 찾을 수도 있음

 

* 매개변수
- str
C 문자열
- character
찾을 문자, int형으로 전달되지만 비교를 위해 내부적으로 char로 다시 변환

* 반환 값(const char * 또는 char *)
- str에서 첫 번째 문자에 대한 포인터
- 문자가 없으면 함수는 널 포인터를 리턴


const char * strstr ( const char * str1, const char * str2 );
      char * strstr (       char * str1, const char * str2 );

- str1에서 str2의 첫 번째 발생에 대한 포인터를 반환하거나,

str2가 str1의 일부가 아닌 경우 null 포인터를 반환

 

* 매개변수
- str1
스캔 할 C 문자열
- str2
일치시킬 문자 시퀀스를 포함하는 C 문자열

* 반환 값(const char * 또는 char *)
str2에 지정된 전체 문자 시퀀스의 str1에서 처음 나타나는 포인터 또는

시퀀스가 str1에 없는 경우 널 포인터


int toupper ( int c );

- c가 소문자이고 해당하는 대문자가 있는 경우 c를 해당하는 대문자로 변환

그러한 변환이 가능하지 않으면 반환된 값은 변경되지 않음

 

* 매개변수

- c

변환 할 문자

int 또는 EOF로 cast 됨

* 반환 값(int)

- 해당 값이 있는 경우 c에 해당하는 대문자, 그렇지 않으면 c(변경되지 않음)

- 값은 암시적으로 char로 캐스팅 될 수 있는 int 값으로 반환


int tolower ( int c );

- c가 대문자이고 해당하는 소문자가 있는 경우 c를 해당하는 소문자로 변환

그러한 변환이 가능하지 않으면 반환 된 값은 변경되지 않음

 

* 매개변수

- c

변환 할 문자

int 또는 EOF로 cast 됨



* 반환 값(int)
- 해당 값이 있는 경우 c에 해당하는 대문자, 그렇지 않으면 c(변경되지 않음)

- 값은 암시적으로 char로 캐스팅 될 수 있는 int 값으로 반환


int sscanf ( const char * s, const char * format, ...);

 

- s에서 데이터를 읽고 매개 변수 형식에 따라 scanf가 사용 된 것처럼

추가 인수가 제공하는 위치에 저장하지만 표준 입력(stdin) 대신 s에서 읽음

- 추가 인수는 형식 문자열 내에서 해당 형식 지정자에 의해

지정된 형식의 이미 할당 된 개체를 가리켜야 함

 

* 매개변수

- s
데이터를 검색하기 위해 source로 처리하는 C 문자열
- format
scanf의 형식과 동일한 사양을 따르는 형식 문자열을 포함하는 C 문자열
- ... (추가 인수)
형식 문자열에 따라 추출 된 문자의 해석이 적절한 유형으로 저장되는

할당된 저장소에 대한 포인터를 각각 포함하는 일련의 추가 인수를 필요로 함
최소한 형식 지정자가 저장 한 값의 수만큼 이러한 인수가 있어야 함

여분의 추가 인수는 무시됨

 

* 반환 값(int)

성공하면 함수는 성공적으로 채워진 인수 목록의 항목 수를 반환

이 개수는 예상 항목 수와 일치하거나 일치 실패의 경우 더 적을 수 있음(0도 포함)
데이터를 성공적으로 해석하기 전에 입력이 실패하면 EOF를 반환


int sprintf ( char * str, const char * format, ... );

- printf에서 format이 사용 된 경우 출력되는 동일한 텍스트로 문자열을 작성하지만

출력되는 대신 내용은 str이 가리키는 버퍼에 C 문자열로 저장
- 버퍼의 크기는 전체 결과 문자열을 포함 할 수 있을만큼 충분히 커야함
- 널 문자는 컨텐츠 뒤에 자동으로 추가
- 형식 매개 변수 뒤에 형식에 필요한 만큼의 추가 인수가 필요

 

* 매개변수

- str
C 문자열이 저장되는 버퍼에 대한 포인터

버퍼는 결과 문자열을 포함 할 수 있을만큼 커야함
- format
printf의 형식과 동일한 사양을 따르는 형식 문자열을 포함하는 C 문자열
- ... (추가 인수)
형식 문자열에 따라 함수는 형식 문자열에서 형식 지정자를 대체하는 데

사용할 값을 포함하는 추가 인수 시퀀스를 필요로 함
최소한 형식 지정자에 지정된 값의 수만큼 이러한 인수가 있어야 함

여분의 추가 인수는 무시됨

 

* 반환 값(int)

성공하면 작성된 총 문자 수를 반환

이 수에는 문자열 끝에 자동으로 추가되는 추가 널 문자가 포함되지 않음
실패하면 음수를 반환


 

char * strtok ( char * str, const char * delimiters );

- str을 delimiters의 일부인 문자로 구분된 연속 문자 시퀀스인 토큰으로 분할
- 첫 번째 호출에서 str에 대한 인수로 C 문자열이 오면,

str의 첫 번째 문자는 토큰 스캔을 위한 시작 위치로 사용

- 후속 호출에서 널 포인터가 오면,

마지막 토큰 끝 바로 뒤의 위치를 ​​스캔을 위한 새 시작 위치로 사용
- 토큰의 시작과 끝을 결정하기 위해 먼저 시작 위치에서

delimiters에 포함되지 않은 첫 번째 문자(토큰의 시작이 됨)를 검색

- 그런 다음 토큰의 끝이 되는 delimiters에 포함 된 첫 번째 문자를 토큰의 시작 부분부터 스캔

- 널 문자가 발견되면 스캔도 중지
- 토큰의 끝은 자동으로 널 문자로 대체되고 토큰의 시작은 함수에 의해 리턴됨
- str의 널 문자가 strtok 호출에서 발견되면

이 함수에 대한 모든 후속 호출(첫 번째 인수로 널 포인터를 사용)은 널 포인터를 리턴
- 마지막 토큰이 발견된 지점은 다음 호출에서 사용할 함수에 의해 내부적으로 유지

 

* 매개변수

- str
자를 C 문자열
이 문자열은 더 작은 문자열(토큰)로 나뉘어 수정됨
또는 널 포인터가 지정 될 수 있으며,

이 경우에는 함수는 이전에 성공한 함수 호출이 종료 된 위치를 계속 검색
- delimiters
구분할 문자가 포함 된 C 문자열

함수 호출시 매번 다를 수 있음

 

* 반환 값(char *)

- 토큰이 발견되면 토큰 시작에 대한 포인터
- 그렇지 않으면 널 포인터
- 검색중인 문자열에서 문자열의 끝에 도달하면(즉, 널 문자) 항상 널 포인터를 반환


[출처] http://www.cplusplus.com/reference/

'Programming' 카테고리의 다른 글

문제해결 및 실습 : C++(3학년 1학  (0) 2020.08.22
컴파일과 링크  (0) 2020.08.22