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을 더하여 다음 문자부터 검색하도록 만듭니다.