본문 바로가기
전산 관련 시험/프로그래밍(C, JAVA, Python)

[C] 프로그래밍 언어 (문자열의 비교와 Case문)

by 응_비 2024. 10. 17.
#include <stdio.h>

int str_cmp(const char* s1, const char* s2, int c) {
    if (!c)
        return 0;
    
    while (--c && *s1 && *s1 == *s2) {
        printf("*");
        s1++;
        s2++;
    }
    
    return *s1 - *s2;
}

int main() {
    int result = str_cmp("abcd", "abcD", 10);
    
    switch (result) {
        case 0:
            printf("equal");
            break;
        default:
            printf("difference");
            break;
    }
    
    return 0;
}


str_cmp 함수:

• 이 함수는 두 개의 문자열 s1과 s2를 최대 c 문자까지 비교합니다.
• 기본 로직:
1. if (!c): 만약 c가 0이라면, 비교할 문자가 없으므로 바로 0을 반환하여 두 문자열이 같다고 간주합니다.
2. while (--c && *s1 && *s1 == *s2): 두 문자열이 같을 동안(*s1 == *s2), 최대 c 번까지 문자를 비교합니다. 문자가 같을 때마다 "*"가 출력됩니다. 각 비교가 끝나면 포인터를 다음 문자로 이동합니다.
3. return *s1 - *s2: 다르거나 문자열이 끝나면, 두 문자의 ASCII 값 차이를 반환합니다.

int main() {
    int result = str_cmp("abcd", "abcD", 10);
    
    switch (result) {
        case 0:
            printf("equal");
            break;
        default:
            printf("difference");
            break;
    }
    
    return 0;
}



main 함수:

• str_cmp("abcd", "abcD", 10)로 두 문자열 "abcd"와 "abcD"를 비교합니다. 10은 최대 비교할 문자의 수를 의미합니다.
• switch (result) 구문으로 문자열 비교 결과에 따라 "equal" 또는 "difference"를 출력합니다.
• 결과가 0이면 두 문자열이 같음을 의미하고 "equal"을 출력.
• 그렇지 않으면 "difference"를 출력.

코드 동작:

1. "abcd"와 "abcD"를 비교합니다.
2. 처음 세 글자 'a', 'b', 'c'는 같기 때문에 *가 세 번 출력됩니다.
3. 네 번째 글자는 'd'와 'D'로 다릅니다. 'd'의 ASCII 값은 100, 'D'의 ASCII 값은 68이므로, 100 - 68 = 32가 반환됩니다.
4. 반환값이 0이 아니므로, "difference"가 출력됩니다.

최종 실행 결과:

***
difference

위 코드는 "abcd"와 "abcD"를 비교했을 때 세 번째 문자까지 같으므로 ***가 출력되고, 네 번째 문자가 달라 "difference"가 출력됩니다.

댓글