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 |