#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void main()
{
char temp[100];
char word[100];
int len;
char *pPos=NULL;
char *pData;
int i=0;
int nCount=0;
pData=temp;
memset(temp,0,100);
memset(word,0,100);
printf("문자열 입력하세요 : ");
gets(temp);
len=strlen(temp);
printf("검색할 문자열 입력하세요 : ");
gets(word);
while(1)
{
pPos=strstr(pData,word);
if(pPos==NULL)
break;
if(pPos)
{
pData=pPos+1;
nCount++;
pPos=NULL;
}
}
printf("검색 문자열 '%s'는 %d 개 있습니다.",word,nCount);
}
//
strstr() 함수는
char *strstr(const char *s1, const char *s2) 원형으로서
문자열 s1에서 s2 를 검색후 같은 문자열이 있으면 같은 문자열의 시작주소를 반환해 줍니다.
이를 응용하여 문자열에 같은단어가 여러개 있어도 검색이 가능합니다.
길이가 100인 문자열에서 32번째와 65번째 원하는 문자열이 있다고 칩시다.
처음에는 문자열의 시작주소를 s1 에 놓아주고, 두번째 검색을 할때에는
위 함수의 리턴값+1을 s1의 값으로 넣어줍니다. 그럼 검색한곳 뒤부터 다시 검색을 하게 되죠