strstr 함수로 문자열에서 문자열 찾기
C 언어 strstr 함수 요약 노트
strstr함수: 문자열에서 특정 문자열을 찾아 그 위치를 반환하는 함수- 함수 원형:
char* strstr(const char* str1, const char* str2);str1: 검색 대상이 되는 문자열str2: 검색하고자 하는 문자열- 반환값:
str1내에서str2의 첫 번째 출현 위치를 가리키는 포인터. 검색 실패 시NULL반환
- 예제 코드 :
str1문자열에서str2문자열을 검색한 후, 검색된 위치부터 끝까지의 문자열을 출력하는 예제
코드: strstr_ppt.c
#include <stdio.h>
#include <string.h>
int main(void)
{
char str1[] = "C Programming";
char str2[] = "Program";
char* ptr = strstr(str1, str2);
if (ptr != NULL)
{
printf("%s\n", ptr); // Program
}
else
{
printf("Not found.\n");
}
return 0;
}
strstr함수 활용 예시: 문자열 검색, 문자열 대체, 문자열 삭제 등
strstr 함수로 문자열에서 문자열 찾기
string.h 헤더 파일에 선언되어 있는 문자열 검색(String String)을 의미하는 strstr 함수를 사용하면 문자열에서 특정 문자열을 검색할 수 있습니다. 문자열 검색도 대소문자를 구분합니다.
strstr 함수의 시그니처는 다음과 같습니다.
char *strstr(
const char *str,
const char *strSearch
);
strstr(문자열배열명, 찾을문자열);- 지정한 문자열 배열에서 특정 문자열이 앞에서부터 처음 나오는 포인터를 반환하거나, 찾을 문자열이 없으면
NULL을 반환합니다.
- 지정한 문자열 배열에서 특정 문자열이 앞에서부터 처음 나오는 포인터를 반환하거나, 찾을 문자열이 없으면
strstr 함수의 사용 예제를 살펴보겠습니다.
코드: strstr.c
//[?] strstr 함수로 문자열 검색하기
#include <stdio.h>
#include <string.h> // 문자열 관련 함수를 사용하기 위한 헤더 파일 포함
int main(void)
{
// 문자열 "C Coding!!!"을 포함하는 char 배열 buffer 선언 및 초기화
char buffer[] = "C Coding!!!";
// buffer에서 "ing"이라는 문자열을 검색하고, 검색된 위치를 가리키는 포인터 pfind에 저장
char* pfind = strstr(buffer, "ing");
// pfind가 가리키는 위치부터 문자열을 출력
printf("%s\n", pfind); // ing!!!
return 0;
}
ing!!!
strstr 함수는 첫 번째 인자로 전달된 문자열에서 두 번째 인자로 전달된 문자열을 검색하고, 검색된 위치를 가리키는 포인터를 반환합니다. 검색에 실패하면 NULL을 반환합니다.
"C Coding!!!" 문자열을 담고있는 buffer에서 strstr 함수로 "ing"를 검색하면 해당 문자열이 검색이되므로 해당 문자열의 시작 포인터를 반환해서 pfind 포인터 변수에 담습니다. 그리고 %s 서식 지정자로 출력해보면 "ing!!!" 형태로 포인터 시작 위치 이후로의 모든 문자열을 가지고 옵니다.
문자열 검색할 때 해당 문자열의 시작 위치를 구할 수 있습니다. 다음 예제를 살펴보세요.
코드: strstr_demo.c
// strstr 함수로 문자열에서 문자열 찾기
#include <string.h>
#include <stdio.h>
int main(void)
{
char string[] = "C language"; // 원본 문자열
char* pfind; // 찾은 문자열 담을 그릇
int position = 0; // 찾은 문자열의 시작 위치
// 문자열 검색
pfind = strstr(string, "age"); // "age" 문자열 찾기
if (pfind != NULL) // 찾지 못하면 NULL 반환
{
printf("%s\n", pfind); // age
position = (int)(pfind - string + 1); // 앞에서부터 찾은 문자열의 시작 위치
printf("%d\n", position); // 8
}
return 0;
}
age
8
"C Language"에서 "age"를 검색하면 ".......age"에서 검색이 됩니다. 그래서 결괏값으로 "age"가 pfind 변수에 담기고 시작 위치 값은 앞에서부터 계산되어 8이 됩니다.
오픈코딩 동영상 강의 - strstr 함수로 문자열에서 문자열 찾기
퀴즈
strstr함수의 반환형은 무엇인가요?- 다음 코드의 실행 결과는 무엇인가요?
코드: strstr_quiz.c
#include <stdio.h>
#include <string.h>
int main(void)
{
char str[] = "C Language";
char* ptr = strstr(str, "lang");
printf("%s", ptr);
return 0;
}
strstr함수는 대소문자를 구분할까요?
정답:
char*Language- 대소문자를 구분합니다.
추천 자료: ASP.NET Core 인증 및 권한 부여
추천 자료: .NET Blazor에 대해 알아보시겠어요? .NET Blazor 알아보기를 확인해보세요!