본문 바로가기
Language/C언어

C034_strstr 함수 구현해서 사용하기

by OdOp 관리자 2023. 10. 29.
SMALL

strstr은 두개의 문자열을 입력받습니다. 

첫 번째로 입력받은 문자열을 str, 두 번째로 입력받은 문자열을 to_find라고 할때에 str에서 tofind를 찾아서 str안의 to_find의 포인터를 반환해줍니다. 

 

한번 작동되는 것을 살펴보겠습니다. 

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

int main() 
{
    char s1[14] = "Hello, World!";
    char* ptr1 = strstr(s1, "World");
    char* ptr2 = strstr(s1, "o,");

    printf("%s\n", ptr1);  //World!
    printf("%s\n", ptr2);  //o, World!
    return 0;
}

 

그런데 일치하는 부분이 없다면 아무것도 출력하지 않게 됩니다. 

한마디로 null pointer을 출력한다고 보시면 편하겠죠.

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

int main() 
{
    char s1[14] = "Hello, World!";
    char* ptr = strstr(s1, "world");
    
    printf("%s\n", ptr);  //
    return 0;
}

 

이제 한번 함수를 구현해 보겠습니다. 

 

strstr 함수

char	*OdOp_strstr(char *str, char *to_find)
{
	int	i;

	if (*to_find == '\0')
		return (str);
	while (*str != '\0')
	{
		if (*str == *to_find)
		{
			i = 0;
			while (str[i] != '\0' && to_find[i] != '\0' && str[i] == to_find[i])
			{
				i++;
			}
			if (to_find[i] == '\0')
				return (str);
			else if (str[i] == '\0')
				return (0);
		}
		str++;
	}
	return (0);
}
LIST