C

자주 사용하는 문자열 관련 함수 정리

고물라됴 2011. 10. 14. 17:38
04년도에 보던 것인데

이번 기회에 포스팅!




 ** 문자열 처리 함수 **

#include <string.h>

 

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

    strlen(문자열)

 

2) 문자열 결합(strcat)

    char *ptr;

    ptr = strcat(문자열1, 문자열2)

//문자열1에 문자열2가 붙는다.
//리턴값은 문자열1의 번지값이 리턴된다.

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)


2) 문자열 결합(strcat)

    char *ptr;

    ptr = strcat(문자열, 문자열2)



2) 문자열 결합(strcat)

    char *ptr;

    ptr = strcat(문자열, 문자열2)

    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);

        }

        }

        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(ptrl1[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);

    }