C언어: <string.h> 함수 모음
<string.h> 함수 모음
strcpy(char* s1, const char* s2)
s2
가 가리키는 곳에 있는 문자열을 s1
이 가리키는 곳에 복사한다. 리턴값은 s1
이다.
strncpy(char* s1, const char*s2, size_t)
strcpy
에 세 번째 인수 추가. 세 번째 인수에 들어온 메모리 크기(바이트)만큼만 s2
가 가리키는 문자열을 s1
에 복사한다.
strlen(const char*)
문자열 길이 리턴 (널 문자 제외)
strcat(char* s1, const char* s2)
s2
가 가리키는 문자열을 s1
이 가리키는 문자열의 끝에 이어붙인다. 리턴값은 s1
이다.
strncat()
: strcat의 안전하지만 더 느린 버전이다. 세 번째 인수에 복사할 메모리 크기를 입력한다. 보통 다음과 같이 사용한다.
strncat(s1,s2,sizeof(s1)-strlen(s1)-1);
s1
배열의 전체 길이에서 문자열 + 1만큼의 길이를 제함으로써, 남은 공간을 계산한다. 기존의 null문자를 덮어씌우면서 append가 진행되므로 1자리가 남는다. 복사할 문자열의 길이가 너무 길어서 짤릴 경우, 이 남은 1자리에 null문자가 남아있게 된다.
strtok(문자열, 분리자 문자열)
: 분리자를 기준으로 토큰을 추출한다
int strcmp(const char* s1, const char* s2)
문자열을 비교한다. (정렬용)
s1<s2
일 경우 음수 리턴, s1==s2
일 경우 0 리턴, s1>s2
일 경우 양수 리턴한다.
이때 비교 기준은 다음 규칙을 따른다.
-
s1
의 문자열이s2
의 일부와 불일치할 경우 ex) “abc” < “abd” 이다. -
s1의 문자열 전체가 s2와 일치할 경우, 문자열이 더 긴 쪽이 크다. ex) “abc” < “abce” 이다.
사전 순서대로 ‘오름차순’ 정렬하는 결과와 유사하다고 보면 된다.
단, 알파벳 대문자, 소문자와 숫자 등이 어떤 순서로 ASCII 코드페이지에 배치돼있는지 숙지하여야 한다.
0-9, A-Z, a-z는 각각 연속적으로 배치되어있다.
0-9< A-Z < a-z 이다.
공백 문자는 모든 출력 문자보다 작다. (' ' = 32
)
strchr()
: 문자열 내에서 문자를 찾는다.
strstr(전체 문자열, 부분 문자열) // 부분문자열을 찾는다
strchr()
, strstr()
함수 모두 대상 문자 또는 문자열이 발견된 위치의 주소를 반환한다.