39.5 연습문제: 문자열 안에서 문자로 검색하기

다음 소스 코드를 완성하여 "n Wonderland", "nderland", "nd"이 각 줄마다 출력되게 만드세요.

practice_string_find_character.c

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

int main()
{
    char s1[30] = "Alice in Wonderland";
    
    ___________________________________

    ___________________________________
    {
        printf("%s\n", ptr);
        ___________________________________
    }
    
    return 0;
}

실행 결과

n Wonderland
nderland
nd

정답

 char *ptr = strchr(s1, 'n');
 while (ptr != NULL)
 ptr = strchr(ptr + 1, 'n');

해설

"n Wonderland", "nderland", "nd"의 공통점은 'n'로 시작한다는 점입니다. 따라서 char *ptr = strchr(s1, 'n');와 같이 strchr 함수로 문자열에서 'n'를 검색합니다. 그리고 검색한 문자열이 여러 개 나왔으므로 while 반복문으로 반복하면서 계속 검색합니다. 단, while 반복문 안에서는 ptr = strchr(ptr + 1, 'n');처럼 이전에 검색한 문자를 계속 검색하지 않도록 포인터에 1을 더하여 다음 문자부터 검색하도록 만듭니다.