문자열 함수
size_t strlen( const char *string );
문자열의 길이를 구한다. 이 함수는 문자열이 끝나는 NULL문자를 제외한 길이를 리턴해준다.
헤더파일 : <string.h>
ex)
char buffer[20] = "I am Neo";
int len = strlen(buffer); // 8
char *strcpy( char *strDestination, const char *strSource );
문자열을 복사한다. 복사가 될 대상을 왼쪽, 복사할 내용의 원본은 오른쪽 파라미터에 위치한다.
헤더파일 : <string.h>
<주의사항> 문자열을 복사할 때 복사할 내용의 원본 문자열에서 NULL을 포함하여 복사하기 때문에 복사가 될 대상 문자열의 크기가 복사할 원본 문자열 크기보다 같거나 더 커야 한다.
ex1)
char buffer[20];
//buffer = "Hello"; // (x)
strcpy(buffer, "Hello"; // (o)
ex2) 주의사항에서 말했던 것 처럼 원본 문자열이 대상 문자열의 크기보다 크면 안된다.
char buffer[10] = "I am Neo";
char name[12] = "The Calling";
strcpy(buffer, name);
printf("buffer = %s\n", buffer);
ex3)
char buffer[10] = "I am Neo";
char name[10] = "Queen";
strcpy(buffer, name);
printf("buffer = %s\n", buffer);
Q | u | e | e | n | \0 |
|
|
|
↓ | ↓ | ↓ | ↓ | ↓ | ↓ |
|
|
|
|
I |
| a | m |
| N | e | o | \0 |
|
Q | u | e | e | n | \0 | e | o | \0 |
|
char *strcat( char *strDestination, const char *strSource );
문자열을 덧붙이는 기능을 한다. 문자열끼리 연결한다라고 말할 수 있다.
대상 문자열이 끝나는 NULL 지점부터 원본 문자열을 NULL을 포함해서 덧붙인다.
<주의사항> 대상 문자열이 덧 붙이는 문자열(NULL을 포함)을 보다 남아 있는 공간이 같거나 더 커야 한다.
ex1)
char title[10] = "Love "; // 남아 있는 공간 5
char name[10] = "Beatles"; // 덧 붙일 문자수 8
strcat(title, name); // (x)
위의 내용이 가능하려면 아래와 같이 수정해야함
char title[20] = "Love "; // 남아 있는 공간 15
char name[10] = "Beatles"; // 덧 붙일 문자수 8
strcat(title, name); // (o)
ex2)
char title[10] = "The "; // 남아 있는 공간 6
char name[10] = "One"; // 덧 붙일 문자수 4
strcat(title, name); // (o)
O | n | e | \0 |
|
|
|
|
|
|
┗ | ━ | ━ | ━ | ┓ |
|
|
|
|
|
T | h | e |
| \0 |
|
|
|
|
|
T | h | e |
| O | n | e | \0 |
|
|
int strcmp( const char *string1, const char *string2 );
문자열을 비교한다.
string1 > string2 일 경우 +1 을 리턴한다.
string1 == string2 일 경우 0 을 리턴한다.
string1 < string2 일 경우 -1 을 리턴한다.
ex1)
int result = strcmp("B", "A"); // +1 B(66), A(65)
int result = strcmp("AB", "A"); // +1 A(65)B(66), A(65)NULL(0)
ex2)
int result = strcmp("A", "A"); // 0 A(65), A(65)
int result = strcmp("AB", "AB"); // 0 A(65)B(66), A(65)B(66)
ex3)
int result = strcmp("A", "B"); // -1 A(65), B(66)
int result = strcmp("AB", "ABC"); // 0 A(65)B(66)NULL(0), A(65)B(66)C(67)
<참조>
sprintf
itoa
atoi
<실습>
아래와 같은 기능을 하는 함수를 포인터를 이용해서 만들어 보자!
포인터 배열 등 배운것을 응용할 뿐만 아니라 알고리즘 또한 훈련할 수 있다.
StrLen
- 문자열 길이 구하기
int StrLen(char* pStr)
StrCpy
- 문자열 복사하기
void StrCpy(char* pDst, char* pSrc)
StrCat
- 문자열 덧붙이기
void StrCat(char* pDst, char* pSrc)
StrCmp
- 문자열 비교하기
int StrCmp(char* pDst, char* pSrc)