strstr
함수로 문자열에서 문자열 찾기
추천 자료: ASP.NET Core 인증 및 권한 부여
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
- 대소문자를 구분합니다.
추천 자료: .NET Blazor에 대해 알아보시겠어요? .NET Blazor 알아보기를 확인해보세요!