Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

고딩개발자

c언어 문자열 비교, 찾기 본문

c언어

c언어 문자열 비교, 찾기

행운의다섯 2017. 7. 14. 12:40

오늘은 문자열이 서로 같은지 비교하는 함수와 문자열 안에서 문자열을 찾는 함수를 알아보아요!!




문자열 끼리 서로 같은지 비교하는 함수에는 strcmp가 있다.

strcmp의 사용방법은 strcmp(비교할 문자열 이름, 비교할 문자열 이름)이다.

strcmp은 두 문자열이 같으면 0을, 앞의 문자열이 더 크면 양수를, 앞의 문자열이 더 작으면 음수를 반환한다.


예제를 살펴보며 이해해 보자.

#include <stdio.h>

int main() {

	char a[] = { "hello world!" };
	char b[] = { "hello world!" };

	if (strcmp(a, b) == 0)
		printf("두 문자열은 같습니다\n");
	else
		printf("두 문자열은 같지 않습니다.\n");

	return 0;
}

이 코드를 보면 문자열 a와 b가 같은 내용이기 때문에 strcmp(a,b)는 0을 반환한다.

따라서 "두 문자열은 같습니다."라는 내용이 출력된다.

 

그렇다면 문자열이 더 크면 양수를, 앞의 문자열이 더 작으면 음수를 반환한다는게 무슨 뜻일까?


아래의 코드를 보자.

#include <stdio.h> int main() { char a[] = { "abc" }; char b[] = { "bcd" }; if (strcmp(a, b) == 0) printf("두 문자열은 같습니다\n"); else if (strcmp(a, b) > 0) printf("앞에 있는 문자열이 더 큽니다.\n"); else printf("앞에 있는 문자열이 더 작습니다.\n"); return 0; }

문자 a,b,c,d는 아스키 코드 값으로 보면 각각 97, 98, 99, 100이다.

따라서 위의 코드에서 봤을 때, 문자열a인 abc의 값보다 문자열b인 bcd의 값이 더 크기 때문에 "앞에 있는 문자열이 더 작습니다."라는 문구가 출력된다.



그럼 이번에는 문자열 안에서 특정 문자열을 찾는 함수인 strstr에 대해 알아보자. 

#include <stdio.h>

int main() {

	char *temp = NULL;

	char a[] = { "hello" };
	char b[] = { "hello world" };
	temp = strstr(b,a);

	if (temp != NULL)
		printf("%s", b);

	printf("\n");

	return 0;
}

strstr함수를 통해서 해당 문자열이 어떠한 문자열에 존재하는지 검색할 수 있다.

strstr의 인수 첫번째는 해당 문자열을 찾을 문자열을, 두번쨰는 찾는 문자열을 쓴다.

위의 코드는 문자열 b에 문자열 a가 있는지 확인해 주는 코드이다.


따라서, 위의 문자열 b에 문자열 a가 있으므로 문자열 b를 출력해 주었다.

'c언어' 카테고리의 다른 글

정올반 2차시  (0) 2017.07.19
정올반 1차시  (0) 2017.07.18
무한의 땅굴(게임프로젝트) 소스코드  (3) 2017.07.02
c언어 게임 프로젝트  (2) 2017.05.27
2차원 배열 달팽이  (2) 2017.03.27