본문 바로가기

공부방/C언어 따라하기

[요청] 입력한 문자열에서 특정단어 검색하기




#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의 값으로 넣어줍니다. 그럼 검색한곳 뒤부터 다시 검색을 하게 되죠