C 언어 문자열 탐색 strstr 사용법

문자열 앞에 특정 문자열이 있는지 탐색을 하는 strstr 함수 사용법을 알아보겠습니다.

strstr 함수는 문자열에서 검색 문자열을 찾으면 시작 위치의 포인터를 반환합니다.

 

사용법

char *strstr(const char *haystack, const char *needle);

 

대상 문자열인 haystack에서 검색 문자열인 needle을 검색합니다.

검색 문자열이 대상 문자열에 존재한다면 시작 위치를 반환합니다.

문자열을 찾지 못하면 NULL을 반환합니다.

예제를 보겠습니다.

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

int main()
{
	char s1[] = "abcdefg";
	char *ptr;

	// s1 문자열 "abcdefg" 에서 "cde"문자열을 찾습니다.
	ptr = strstr(s1, "cde");

	printf("%s\n", ptr);

	return 0;
}

 

결과

cdefg

 

ptr에는 s1 문자열에서 문자 cde로 시작하는 부분부터 문자열이 저장됩니다. 

문자열을 찾지 못한 경우에는 NULL을 반환하기 때문에 NULL 처리도 같이 작성해 주는 것이 좋습니다.

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

int main()
{
	char s1[] = "abcdefg";
	char *ptr;
	
	// s1 문자열 "abcdefg" 에서 "cde"문자열을 찾습니다.
	ptr = strstr(s1, "cdea");
    
	// 검색 문자열을 찾은 경우에만 출력
	if (ptr != NULL)
	{
		printf("%s\n", ptr);
	}

	return 0;
}

 

샘플 소스에서는 검색 문자열을 찾은 경우에만 출력하도록 하고 있습니다.

문자열을 치환하거나 삭제하는 등 처리를 할 때 NULL 값을 가지고 처리를 하면 생각지 못한 에러가 발생할 수도 있기 때문입니다.

댓글