반응형

C언어 문자열 비교

1. Compare strings

2. strcmp()

 

 

strcmp 없이 - Compare strings

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
32
33
34
35
36
37
38
39
/* Compare strings */
#include <stdio.h>
#include <string.h>
 
// Compare two strings
// Return -1 or 0 or 1
int compare(char str1[], char str2[]) {
    int i;
    for (i = 0; str1[i] != '\0'; i++)
        if (str1[i] != str2[i]) break;        
    int compare = str1[i] - str2[i];
 
    if (compare == 0) compare = 0;
    else if (compare < 0) compare = -1;
    else compare = 1;
 
    return compare;
}
 
// Test compare method
void testCompare() {
    printf("compare v. strcmp\n");
    printf("%6d  v. %2d\n", compare("xy""xyz"), strcmp("xy""xyz"));
    printf("%6d  v. %2d\n", compare("xyz""xy"), strcmp("xyz""xy"));
    printf("%6d  v. %2d\n", compare("""a"), strcmp("""a"));
    printf("%6d  v. %2d\n", compare("a"""), strcmp("a"""));
    printf("%6d  v. %2d\n", compare(""""), strcmp(""""));  
    printf("%6d  v. %2d\n", compare("apple""orange"), strcmp("apple""orange"));
    printf("%6d  v. %2d\n", compare("orange""apple"), strcmp("orange""apple"));
    printf("%6d  v. %2d\n", compare("apple""apple"), strcmp("apple""apple"));
}
 
int main() {
    testCompare();
 
    char str1[] = "xy";
    char str2[] = "xy";
    printf("%s & %s: %d\n", str1, str2, compare(str1, str2));
}

 

 

 

 

strcmp()

1
2
3
4
5
6
7
8
9
10
/* Compare strings */
#include <stdio.h>
#include <string.h>
 
int main() {
    char str1[] = "xy";
    char str2[] = "xy";
    if (strcmp(str1, str2) == 0printf("Same\n");
    else printf("Different\n");
}

 

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
/* Compare strings */
#include <stdio.h>
#include <string.h>
 
int strCompare(char str1[], char str2[]) {
    return strcmp(str1, str2);
}
 
void print(int strcmp) {
    if (strcmp == 0printf("Same\n");
    else printf("Different\n");
}
 
int main() {
    char str1[] = "xy";
    char str2[] = "xy";
    print(strCompare(str1, str2));
}

 

반응형