본문 바로가기
c언어

c언어 문자열 처리 라이브러리에 대하여 알아보기 1(문자열의 길이 구하기, 문자열 복사하기, 문자열 연결하기)

by 개발자 L 2022. 12. 29.
반응형

c언어 문자열 처리 라이브러리에 대하여 알아보기 1(문자열의 길이 구하기, 문자열 복사하기, 문자열 연결하기)

네 안녕하세요, 이번 포스팅에서는 문자열 처리 라이브러리에 대하여 알아보는 시간을 가져보도록 하겠습니다.

우리가 문자열을 쓸 때마다 여러 가지 처리 요소들을 맞닥뜨릴 겁니다.

예를 들자면 문자열을 비교를 해야 한다던가,

문자열 안에 있는 문자 또는 문자열의 일부를 찾아내는 등의 작업을 해야 할 겁니다.

그래서 이러한 문자열을 처리하는 기능을 가진 라이브러리 함수들에 대하여 알아보도록 하겠습니다.

그럼 지금부터 같이 보시죠.

 

1. 문자열 처리 라이브러리 함수

문자열 처리 라이브러리 함수 역시 우리가 추가적인 헤더 파일을 전처리기에서 넣어줘야 쓸 수 있습니다.

헤더 파일의 이름은 'string.h'입니다.

아래는 문자열 처리 라이브러리 함수들을 정리한 표입니다.

함수 설명
strlen(s) 문자열 s의 길이 구하기
strcpy(s1, s2) s2를 s1에 복사
strcat(s1, s2) s2를 s1의 끝부분에 붙여넣기
strcmp(s1, s2) s1과 s2를 비교
strncpy(s1, s2, n) s2의 최대 n개의 문자를 s1에 복사
strncat(s1, s2, n) s2의 최대 n개의 문자를 s1의 끝부분에 붙여넣기
strncmp(s1, s2, n) 최대 n개의 문자까지 s1과 s2를 비교
strchr(s, c) 문자열 s 안에서 문자 c 찾기
strstr(s1, s2) 문자열 s1 안에서 문자열 s2 찾기
char * strtok(s, delimit) 문자열 s를 delimit를 이용하여 토큰으로 분리

이러한 함수들이 있습니다.

 

1 - 1. 문자열의 길이 구하기

제일 먼저 해볼 작업은 문자열의 길이를 구하는 것입니다.

이때 사용되는 함수는 strlen() 함수입니다.

길이를 구할 때는 문자가 변경이 되면 받기가 어려우므로,

보통 문자열 상수를 쓰는 편입니다.

이런 식으로 말이죠.

int size = strlen("abcdef");
printf("%d\n", size);

이런 식으로 쓸 수 있습니다.

그리고 문자 배열은 이전 포스팅들에서 설명을 드렸듯이,

배열이기 때문에 포인터로 받을 수 있기 때문에,

원본에 접근을 할 때 매개 변수를 문자형 포인터로 선언하여 씁니다.

다시 말하면 strlen() 함수 안에 있는 문자열 상수가 곧 문자형 포인터가 되는 것이죠.

반응형

 

1 - 2. 문자열 복사하기

이번에는 문자열을 복사를 하는 방법을 알아보겠습니다.

문자열을 복사하는 원리는 문자열 원본인 src(source)를 dst(destination)에 복사를 하는 것입니다.

그리고 이 역시 문자 배열을 복사를 하는 것이기 때문에 문자 배열의 주소를 이용하여 한 글자씩 복사가 됩니다.

그리고 이때 쓰는 함수의 이름은 strcpy() 함수입니다.

이런 식으로 쓰시면 됩니다.

char dst[6];
char src[6] = "Hello";
strcpy(dst, src);

이렇게 쓰면 src에 있는 문자열 Hello를 dst에 복사를 하게 됩니다.

그리고 여기서 문자열을 일부만 복사를 하고 싶을 때는 strncpy() 함수를 써서 표현을 할 수 있습니다.

strncpy(dst, src, 3);

만약에 이런 식으로 코드를 짰다면,

Hello 안에 있는 문자열 3개만, 다시 말하면 Hel만 복사가 됩니다.

 

1 - 3. 문자열 연결하기

이번에는 문자열을 연결하는 것을 알아보도록 하겠습니다.

문자열을 연결할 때는 보통 dst의 끝에 src를 연결을 해줍니다.

그래서 src에 충분한 공간이 주어지지 않는다면 문제가 생깁니다.

그리고 이를 실행할 때 쓰는 함수의 이름은 strcat() 함수이며,

전체 문자열을 NULL 문자를 써서 완전한 문자열을 완성시킨 후 종료합니다.

그리고 앞서 말했듯이 src의 공간이 부족하면 에러가 생기는데,

그러는 경우를 방지를 하려면 필요한 문자열의 길이만큼만 떼어서 붙일 수 있는 함수인 strncat() 함수를 쓰시면 됩니다.

사용 방법은 이러합니다.

char dst[12] = "Hello";
char src[6] = "world";
strcat(dst, src);

그럼 이를 이용해서 문자열을 복사한 후에 붙여 넣는 코드를 한 번 작성을 해보도록 하겠습니다.

#include <stdio.h>
#include <string.h>

int main()

{
    char str[80];

    strcpy(str, "Hello world from ");
    strcat(str, "strcpy ");
    strcat(str, "and ");
    strcat(str, "strcat!");

    printf("string = %s\n", str);

    return 0;
}

이렇게 한 번 작성을 해봤습니다.

그럼 결과가 어떤 식으로 나오는지 한번 보도록 하겠습니다.

string = Hello world from strcpy and strcat!

제대로 문자열들이 복사가 되어 연결이 된 것을 볼 수 있습니다.

 

여기까지 문자열 처리 라이브러리에 대하여 알아보는 시간을 가져보았는데요,

이 파트는 좀 길어서 두 부분으로 나눠서 설명을 드리도록 하겠습니다.

다음 포스팅에서는 문자열 처리 라이브러리 함수의 나머지 부분들을 이어서 말씀드리도록 하겠습니다.

긴 글 읽어주신 독자분들께 진심으로 감사드립니다~

반응형

댓글