가끔 문자열 처리나오면 새로 만드는 귀찮니즘 때문에



"C기초에서 그래픽까지" 김정철님께서 쓰신 책의 내용을 정리해서



올려봅니다..



조금이나마 도움이 됐으면 합니다...



** 문자열 처리 함수 **

#include <string.h>



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

       }

       }

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

   }

+ Recent posts