Programming Language/C2010. 10. 14. 19:37

Mid(str,a,b_).c  ([C.L.A]. 문자열중간읽기)

Mystrstr(_s,t_)2_first_End.c ([C.L.A] 문자열 속에 문자열 갯수파악)

 - Command Line Argument
 C프로그래밍은 실제 시스템에 사용되는 시스템 프로그래밍의 특성상, CLA를 이용한 경우가 많습니다.

문자열의 중간을 읽고, 문자열 속에 문자열 갯수를 파악하는 소스를 구현하며, C에서 문자열의 구조에 익숙해지기 바랍니다.

 /*

  실습2) 주어진 문자열(s)내에 또다른 주어진 문자열(t)이 몇게 있는가를 알려주는 함수.
  Mystrstr(s,t)를 만드시오. (이 때, command line argument 를 사용하시오.)
 =strcount abcabbccbcabc bca
 =main에서
  -argc 가 3이 아니면 error 처리.
  -call 은
   result = Mystrstr(argv[1],argv[2]);
  -출력은 printf("%d\n",result);

 
*/


#include<stdio.h>
#include<string.h>
#include<stdlib.h>

#define len(a) strlen(a)

int Mystrstr(char* s,char* t);
// *s는 주어진 문자열 전부 , *t는 검색할 문자열 , 검색한 갯수가 리턴형.

int main(int argc, char *argv[]){
//int main(void){ 
// char* argv[] = {"strcount","fdabcdefghijdsgabcdefghijkkabcdefghij","abcdefghij"};

 int result;
 result = Mystrstr(argv[1],argv[2]);
 puts("결과값은");
 printf("검색하신 문자열의 갯수는 ' %d '개 입니다.\n",result);
 return 0;
}


int Mystrstr(char* s,char* t)  //  s = 앞 글자 , t= 뒷 글자.
{
 int cnt;
 int tcnt =0 ;
 int result =0 ;        // 리턴될 결과.
 
 for(cnt=0; cnt < len(s) ;cnt++)
 {
  if(s[cnt] == t[tcnt])
  {
   for( ; tcnt <= ((len(t)-1)/2) ; tcnt++)
   {
    if(s[cnt+len(t)-1-tcnt] == t[len(t)-1-tcnt] && s[cnt+tcnt] == t[tcnt])
    {
     if(tcnt == (len(t)-1)/2){
      result++;
      cnt+=(len(t)-1);
      break;
     }
    }
    else break;
   }
   tcnt=0;
  }
 }

 
 return result;
}

/*
  
int mystrstr(char* s,char* t)
{
 int i,j,result = 0;
 int flag = 0;
 int check = 0;
 int s_strl = strlen(s);
 int t_strl = strlen(t);

 for(i=0; i < s_strl ;i++)
 {
  if( s[i]==t[0] )
  {
   // 처음부터 차례대로 검색하는 방법

   for( j=0; j < t_strl ; j++ )
   {
    (s[i+j]==t[j]) ? (flag=1) : (flag=0);
    if(flag ==0) break;
   }
   
   // 처음, 끝, 두번째, 끝에서 두번째 순서로 검색하는 방법
/*
   for( j=0 ; j < t_strl/2 ; j++ )
   {
    (s[i+j]==t[j]) ? (flag=1) : (flag=0);
    if(flag ==0) break;
    (s[i+t_strl-1-j]==t[t_strl-1-j]) ? (flag=1) : (flag=0);
    if(flag ==0) break;
   }
*//*
  }// end of ____if( s[i]==t[0] )
  if( flag == 1 )
  {
   flag = 0;   // flag 초기화
   i += (t_strl-1); // i++ 해주므로 -1
   result++;
  }// end of _____if( flag == 1)
 }
 return result ;
}
*/


 

'Programming Language > C' 카테고리의 다른 글

_Mini_Project1_CALC  (0) 2010.10.14
C Tutorial (strcmp+numcmp)  (0) 2010.10.14
C Tutorial (역순화 문자열)  (0) 2010.10.14
C Tutorial (문자열크기비교)  (0) 2010.10.14
C Tutorial (실수형to문자열)  (0) 2010.10.14
Posted by BLUE-NOTE