문자열 공백 제거하기: trim, trim_left 및 trim_right 함수 사용하기
문자열을 처리할 때 공백 문자를 제거해야 하는 상황이 자주 발생합니다. 이번 포스트에서는 C 언어로 문자열 앞, 뒤, 양쪽의 공백을 제거하는 함수를 작성하는 방법을 살펴봅니다.
소개
string_trim.c
소스 코드에는 세 가지 함수가 포함되어 있습니다.
trim_left
: 문자열 앞쪽의 공백을 제거합니다.trim_right
: 문자열 뒤쪽의 공백을 제거합니다.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_left
와 trim_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
코드를 참조하여 필요에 따라 수정하거나 확장할 수 있습니다.