12-1-마.문자열 변환

문자열 변환이란 문자열의 내용을 일정한 규칙에 따라 바꾸는 것이다. 다음 다섯 가지의 함수가 있는데 아주 쉬우므로 간략하게 설명하도록 한다.

 

char *strset(char *string, int c);

char *strnset(char *string, int c, size_t count);

char *strlwr(char *string);

char *strupr(char *string);

char *strrev(char *string);

 

strset 함수는 문자열을 c문자로 가득 채운다. 널 문자 직전까지의 모든 문자들이 c 문자로 바뀐다. str이 "password" 문자열을 가질 때 strset(str,'*')는 이 문자열을 "********"로 바꿀 것이다. strnset 함수는 개수를 지정할 수 있다는 것만 다르다.

strlwr 함수는 모든 문자를 소문자로 바꾸며 strupr 함수는 모든 문자를 대문자로 바꾼다. str이 "String Test"일 때 strlwr(str)은 "string test"로, strupr(str)은 "STRING TEST"로 바꿀 것이다. 두 함수 모두 영문자가 아닌 한글이나 숫자, 기호는 그대로 유지한다.

strrev 함수는 문자열을 거꾸로 뒤집는다. 즉, 제일 처음에 있는 문자를 마지막 문자와 교환하고 두 번째 문자는 마지막 두 번째 문자와 교환하는 식이다. 널 종료 문자는 교환 대상에서 제외된다. str이 "String"일 때 strrev(str)을 호출하면 "gnirtS"가 될 것이다. 이 함수는 문자열을 구성하는 개별 문자를 기계적으로 교환할 뿐이므로 한글에 대해서는 제대로 동작하지 않는다.

str이 "쓰레기통"일 때 strrev 함수를 호출한다고 해서 이 문자열이 "통기레쓰"가 되는 것은 아니다. 한글은 한 음절이 2바이트이기 때문에 2바이트씩 한꺼번에 교환해야 거꾸로된 문자열을 만들 수 있다. 다음 예제는 문자열 변환 함수들을 골고루 사용해 본 것이다.

 

: strrev

#include <Turboc.h>

#include <string.h>

 

void main(void)

{

     char str[]="Made In Korea";

     char str2[16];

 

     strcpy(str2,str);

     strupr(str2);

     printf("strupr => %s\n",str2);

     strcpy(str2,str);

     strlwr(str2);

     printf("strlwr => %s\n",str2);

     strcpy(str2,str);

     strrev(str2);

     printf("strrev => %s\n",str2);

     strcpy(str2,str);

     strset(str2,'*');

     printf("strset => %s\n",str2);

}

 

str2에 "Made In Korea"라는 문자열을 저장한 후 각각의 문자열 변환 함수로 이 문자열을 바꾸어 보았다. 실행 결과는 다음과 같다.

 

strupr => MADE IN KOREA

strlwr => made in korea

strrev => aeroK nI edaM

strset => *************

 

함수 이름을 외우기가 좀 어려워서 그렇지 동작은 정말 간단한 편이다.