본문 바로가기
C/C언어 코딩도장

UNIT 44 문자열 검색하기

by yeong1225 2022. 2. 26.
문자 검색 : char *ptr = strchr(대상문자열, 검색할 문자);
오른쪽부터 문자 검색 : char *ptr = strrchar(대상문자열, 검색할문자);
문자열 검색 : char *ptr = strstr(대상문자열, 검색할문자열);
※문자를 검색할 때는 ' '/ 단어(문자열)를 검색할 때는 " "

44.1 문자열 안에서 문자로 검색하기

strchr 함수를 사용하면 문자열에서 특정 문자로 검색할 수 있음. 함수이름은 string character 에서 따옴.(string.h 헤더 파일에 선언되어 있음)

 

strchr(대상문자열, 검색할 문자);

-문자를 찾았으면 문자로 시작하는 문자열 포인터를 반환, 문자가 없으면 NULL을 반환

-대소문자 구분함

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

int main()
{
	char s1[30] = "A Garden Diary"; 

	char* ptr = strchr(s1, 'a'); //'a'로 시작하는 문자열 검색, 포인터 반환

	while (ptr != NULL)
	{
		printf("%s\n", ptr); // 검색된 문자열 출력
		ptr = strchr(ptr + 1, 'a'); //포인터에 1을 더하여 a 다음부터 검색
	}
	

	return 0;
}
arden Diary
ary

44.2 문자열의 오른쪽 끝부터 문자로 검색하기

strrchr 함수는 문자열의 끝에서부터 문자를 검색함. 오른쪽에서부터 문자를 찾아라(string(find from the right)character)에서 따옴.(string.h 헤더 파일에 선언되어 있음)

strrchar(대상문자열, 검색할문자);

-대소문자 구분함

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

int main()
{
	char s1[30] = "A Garden Diary"; 

	char* ptr = strrchr(s1, 'a'); //문자열 끝에서부터 'a'로 시작하는 문자열 검색.포인터 반환

	printf("%s\n", ptr); //ary
	
	return 0;
}

44.3 문자열 안에서 문자열로 검색하기

strstr함수는 문자열 안에서 문자열을 검색함. string(find)string에서 따옴. (string.h) 헤더 파일에 선언되어 있음.

strstr(대상문자열, 검색할문자열);

-대소문자 구분

실제 검색할 때 문자(strchr)보다 단어(strstr)로 검색하는 경우가 많기 때문에 프로그램을 만들때도 문자열 찾기 함수를 더 자주 씀.

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

int main()
{
	char s1[30] = "A Garden Diary"; 

	char* ptr = strstr(s1, "den"); //den으로 시작하는 문자열 검색, 포인터 반환

	printf("%s\n", ptr); //den Diary
	
	return 0;
}

while 반복문을 사용하여 문자열을 계속 검색할 수 있음.

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

int main()
{
	char s1[100] = "A Garden Diary A Garden Diary A Garden Diary";

	char* ptr = strstr(s1, "den"); //den으로 시작하는 문자열 검색, 포인터 반환

	while (ptr != NULL)
	{
		printf("%s\n", ptr);
		ptr = strstr(ptr + 1, "den");
	}

	return 0;
}
den Diary A Garden Diary A Garden Diary 
den Diary A Garden Diary 
den Diary