문자열 공백 제거하기: trim, trim_left 및 trim_right 함수 사용하기

  • 4 minutes to read

문자열을 처리할 때 공백 문자를 제거해야 하는 상황이 자주 발생합니다. 이번 포스트에서는 C 언어로 문자열 앞, 뒤, 양쪽의 공백을 제거하는 함수를 작성하는 방법을 살펴봅니다.

소개

string_trim.c 소스 코드에는 세 가지 함수가 포함되어 있습니다.

  1. trim_left: 문자열 앞쪽의 공백을 제거합니다.
  2. trim_right: 문자열 뒤쪽의 공백을 제거합니다.
  3. trim: 문자열 양쪽의 공백을 제거합니다.

이 함수들을 사용하여 다양한 공백 처리 작업을 수행할 수 있습니다.

코드 구조

먼저, 필요한 헤더 파일을 포함시킵니다.

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

그런 다음, 함수 원형을 선언합니다.

char *trim_left(char *str);
char *trim_right(char *str);
char *trim(char *str);

main 함수에서는 문자열을 선언하고 각 함수를 호출한 다음 결과를 출력합니다.

int main(void) {
    char str1[] = " Abc Cba ";
    char str2[] = " Abc Cba ";
    char str3[] = " Abc Cba ";

    printf("[%s]\n", trim_left(str1));
    printf("[%s]\n", trim_right(str2));
    printf("[%s]\n", trim(str3));

    return 0;
}

이제 각 함수를 살펴봅니다.

trim_left 함수

trim_left 함수는 문자열의 앞쪽 공백을 제거합니다. 문자열의 시작부터 끝까지 반복하며 공백 문자를 찾습니다. 공백 문자를 찾으면 포인터를 증가시켜 다음 문자로 이동합니다.

char *trim_left(char *str) {
    while (*str) {
        if (isspace(*str)) {
            str++;
        } else {
            break;
        }
    }
    return str;
}

trim_right 함수

trim_right 함수는 문자열의 뒤쪽 공백을 제거합니다. 문자열의 끝에서 시작하여 역순으로 진행하며 공백 문자를 찾습니다. 공백 문자를 찾으면 인덱스를 감소시키고, 공백이 아닌 문자를 찾으면 해당 위치에 널 문자를 추가하여 문자열을 종료합니다.

char *trim_right(char *str) {
    int len = (int)strlen(str) - 1;

    while (len >= 0) {
        if (isspace(*(str + len))) {
            len--;
        } else {
            break;
        }
    }
    *(str + ++len) = '\0';
    return str;
}

trim 함수

trim 함수는 문자열의 양쪽 공백을 제거합니다. 이 함수는 trim_lefttrim_right 함수를 순서대로 호출하여 양쪽 공백을 모두 제거합니다.

char *trim(char *str) {
    return trim_left(trim_right(str));
}

전체 소스 코드

코드: string_strim.cs

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

// 함수 원형 선언
char* trim_left(char* str);
char* trim_right(char* str);
char* trim(char* str);

int main(void) {
    char str1[] = " Abc Cba ";
    char str2[] = " Abc Cba ";
    char str3[] = " Abc Cba ";

    printf("[%s]\n", trim_left(str1));
    printf("[%s]\n", trim_right(str2));
    printf("[%s]\n", trim(str3));

    return 0;
}

// trim_left 함수: 문자열의 왼쪽 공백을 제거
char* trim_left(char* str) {
    while (*str) {
        if (isspace(*str)) {
            str++;
        }
        else {
            break;
        }
    }
    return str;
}

// trim_right 함수: 문자열의 오른쪽 공백을 제거
char* trim_right(char* str) {
    int len = (int)strlen(str) - 1;

    while (len >= 0) {
        if (isspace(*(str + len))) {
            len--;
        }
        else {
            break;
        }
    }
    *(str + ++len) = '\0';
    return str;
}

// trim 함수: 문자열의 양쪽 공백을 제거
char* trim(char* str) {
    return trim_left(trim_right(str));
}

결론

이 포스트에서는 C 언어로 문자열 앞, 뒤, 양쪽의 공백을 제거하는 함수를 작성하는 방법을 살펴보았습니다. 이 함수들은 다양한 문자열 처리 작업에 유용하게 사용될 수 있습니다. string_trim.c 코드를 참조하여 필요에 따라 수정하거나 확장할 수 있습니다.

VisualAcademy Docs의 모든 콘텐츠, 이미지, 동영상의 저작권은 박용준에게 있습니다. 저작권법에 의해 보호를 받는 저작물이므로 무단 전재와 복제를 금합니다. 사이트의 콘텐츠를 복제하여 블로그, 웹사이트 등에 게시할 수 없습니다. 단, 링크와 SNS 공유, Youtube 동영상 공유는 허용합니다. www.VisualAcademy.com
박용준 강사의 모든 동영상 강의는 데브렉에서 독점으로 제공됩니다. www.devlec.com