** 문자열 처리 함수 **

#include

1) 문자열의 길이 측정(strlen)

strlen(문자열)

2) 문자열 결합(strcat)

char *ptr;
ptr = strcat(문자열, 문자열2)

3) 문자열 비교(strcmp)

int i;
i = strcmp(문자열, 문자열2)
i == 0 <--- 같다.
i != 1 같지 않다.

4) 문자열 복사(strcpy)

char *ptr;
strcpy(문자열, 문자열2)
문자열2를 문자열로 복사 5) 문자열 변환(atoi, atol, atof)

atoi -> 정수
atol -> long
atof -> 부동 소수점.

long b; float c;
int a;

a = atoi("1234" );
b = atol("-544334" );
c = atof("43.5456);

6) 문자열 교환 함수 (str_swap)

void str_cpy(char *ptr1, char *ptr2)
{
while(*ptr2)
*ptr1++ = *ptr2++;
*ptr1 = NULL;

}

void str_swap(char *a, char *b)
{
char temp[255];
str_cpy(temp, a)
str_cpy(a, b);
str_cpy(b, temp);
}
7) 문자열 내에서 특정 문자의 개수를 카운트 하는 함수(char_cnt)

int char_cnt(char *ptr, char ch)
{
int i = 0;

wile(*ptr)
if(*ptr++ == ch)
i++;

return(i);

}  

8) 문자열 내의 특정 문자를 다른 문자로 바꾸는 함수(str_chg)

int str_chg(char *ptr, char ch1, char ch2)
{
while(*ptr)
{
if(*ptr == ch1)
*ptr = ch2;

ptr++;
}
}

9) 문자열 내의 특정 문자를 탐색(str_fine)

char *str_find(char *ptr, char ch)
{
while(*ptr)
{
if(*ptr == ch)
return(ptr);
ptr++;
}

return((char *)(-1));

}

10) 문자열 내의 소문자를 대문자로 바꾸는 함수(str_upp)

void str_upp(char *ptr)
{
while(*ptr)
{
if(islower(*ptr))
*ptr = toupper(*ptr);
ptr++;
}
}

11) 문자열 내의 대문자를 소문자로 바꾸는 함수(str_low)

void str_low(char *ptr)
{
while(*ptr)
{
if(isupper(*ptr))
*ptr = tolower(*ptr);
ptr++;
}
}

12) 대문자와 소문자 상호 교환 함수(str_case)

void str_case(char *ptr)
{
while(*ptr)
{
if(isupper(*ptr))
*ptr = tolower(*ptr);
else if(islower(*ptr)
*ptr = toupper(*ptr);
ptr++;
}
}

13) 각 문장의 첫 문자만 대문자로 교환하는 함수(str_fst)

void str_fst(char *ptr)
{
if(islower(*ptr))
*ptr = toupper(*ptr);

while(*ptr)
{
if(*ptr == '.')
{
ptr++;

while(*ptr == ' ')
ptr++;

if(islower(*ptr))
*ptr = toupper(*ptr);
}

break;
}

ptr++;
}

14) 문자열 내의 지정한 위치에 다른 문자열을 삽입하는 함수(str_ins)

char *str_ins(char ptr1[], char ptr2[],int t)
{
char temp[255];
int i, j, k;

if(t>=str_len(ptr1) return (-1);

for(k=0; i=0; i<t; i++; k++)
temp[k] = ptr1[i];

for(j=0; ptr2[j] != NULL; j++, k++)
temp[k] = ptr2[j];

while(ptr1[i])
temp[k++] = ptr1[i++];
temp[k] = NULL;
}

15) 문자열 앞에 지정한 개수 만큼의 공백을 추가하는 함수(str_blk)

void str_blk(char ptr[], int t)
{
static char temp[255];
int i;

for(i = 0; i<t; i++)
temp[i] = BLANK;

temp[i] = NULL;

str_cat(temp, ptr);

str_cpy(ptr, temp);
}

16) 문자열 내의 모든 공백을 삭제하는 함수(rmv_blk)

void rmv_blk(char ptrp[])
{
char temp[255];
int i, k;

for(i=0, k=0; ptr[i] != NULL; i++)
if(ptr[i] != BLANK)
temp[k++] = ptr[i];

temp[k] = NULL;

str_cpy(ptr, temp);
}

17) 문자열 내에서 원하는 개수 만큼 문자를 삭제하는 함수(str_rmv)

void str_rmv(char *ptr, int loc, int count)
{
int len, i, j;
len = str_len(ptr);

if(loc >= len)
return (-1);

if(loc + count <= len)
{
j = loc + count;

for(i=loc; ptr[j] != 0; i++)
{
ptr[i] = ptr[j];
j++;
}
ptr[i] = NULL
}
else
ptr[loc] = NULL;
}

18) 특정한 문자열이 기억된 위치를 계산하는 함수(str_loc)

int str_loc(char ptr1[], char ptr2[])
{
int i, j, k;
for(i=0; ptr1[i] != NULL; i++)
for(j=i, k=0; ptr2[k] == ptr1[j]; k++, j++)
return (i);
return (-1);
}

19) 특정한 문자열이 나온 개수를 카운트 하는 함수(str_cnt)

int str_cnt(char ptr1[], char ptr2[])
{
int i, j, k;
int count = 0;
for(i=0; ptr1[i] != NULL; i++)
for(j=i, k=0; ptr2[k] == ptr1[j]; k++, j++)
if(ptr2[k+1] == NULL)
{
count++;

break;
}
return ((count == 0) ? -1 : count);
}

'개발지식창고 > C' 카테고리의 다른 글

C 문자열 함수 정리  (0) 2010.09.20
BASE64 Encode/Decode  (0) 2010.09.20
printf 특수문자 출력하기  (0) 2010.08.16
32비트 배열을 이용한 상태값 저장 및 얻어오기  (0) 2010.08.16
[C/C++]#define 매크로 팁  (0) 2010.08.16
Posted by 모과이IT
,