학습 목표
문자열이 저장되어 있는 방식에 근거해서 문자열을 비교하는 방법에 대해 설명할 수 있다.
1. 예시
#include <stdio.h>
int main(void)
{
char *s = "EMMA";
printf("%p\n", s);
}
- 코드를 실행하면?
"EMMA" 라는 문자열의 첫번째 값인 "E"의 메모리 주소가 출력이 된다.
printf("%p\n", &s[0]);
printf("%p\n", &s[1]);
printf("%p\n", &s[2]);
printf("%p\n", &s[3]);
- 이 코드를 실행하면 어떻게 나올까?
s라는 문자열의 첫번째 값인 "E"의 메모리 주소, 두번째 값인 "M"의 메모리 주소.....
2. 문자열 비교
#include <cs50.h>
#include <stdio.h>
int main(void)
{
string s = get_string("s: ");
string t = get_string("t: ");
if (s == t)
{
printf("Same\n");
}
else
{
printf("Different\n");
}
}
- 코드를 실행하면?
문자열이 저장된 변수 string s와 strign t를 바로 비교하면 변수가 저장되어있는 주소 값이 다르기 때문에 다르다는 결과가 나온다.
- 정확한 비교를 하려면, 실제 문자열이 저장되어있는 곳으로 이동한 후 문자 하나하나씩 비교해야 한다.