๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

TIL (Today I Learned)/C

[C] strncmp์™€ strcnp

728x90

strncmp์™€ strcnp

ํ—ค๋”ํŒŒ์ผ

<string.h>    // c์–ธ์–ด
<cstring>     // c++

function prototype

int strcmp(const char* str1, const char* str2);
int strncmp(const char* str1, const char* str2, size_t n);
  • strcmp
    • str1 : ๋น„๊ตํ•  ๋ฌธ์ž์—ด 1
    • str2 : ๋น„๊ตํ•  ๋ฌธ์ž์—ด 2
  • strncmp
    • str1 : ๋น„๊ตํ•  ๋ฌธ์ž์—ด 1
    • str2 : ๋น„๊ตํ•  ๋ฌธ์ž์—ด 2
    • n : ๋น„๊ตํ•  ๋ฌธ์ž์—ด ๊ธธ์ด (size_t๋Š” unsigned int / 0๋ณด๋‹ค๋Š” ํฐ ๊ฐ’์ด ๋“ค์–ด์™€์•ผํ•œ๋‹ค.)
      • str1์ด ๋ฌธ์ž 8๊ฐœ str2๊ฐ€ ๋ฌธ์ž์—ด 18๊ฐœ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์„ ๋•Œ n์ด 10, 100์„ ๋„ฃ์–ด๋„ str1์˜ 8๊ฐœ ๋ฌธ์ž๋งŒ ๋น„๊ตํ•œ๋‹ค.

strcmp ๋น„๊ต

char str1[] = "Loki MCU";
char str2[] = "Loki MCU";

strcmp(str1, str2);       // ๋ฌธ์ž์—ด ๊ฐ™๋‹ค : 0 ๋ฐ˜ํ™˜
strcmp(str1, "Loki PCU"); // 'M' < 'P' ์Œ์ˆ˜ ๋ฐ˜ํ™˜  cf) M : 120 P : 123
strcmp(str1, "Loki DCU"); // 'M' > 'D ์–‘์ˆ˜ ๋ฐ˜ํ™˜   cf) M : 120 D : 111
  • C์–ธ์–ด ๋ฌธ์ž์—ด char*, char[]์˜ ๋์—๋Š” ๋ฌธ์ž์—ด์˜ ๋์ธ '\0'์ด ๋“ค์–ด๊ฐ€ ์žˆ๋‹ค.
  • ์ด๊ฒƒ์€ null์„ ์˜๋ฏธ = ์•„์Šคํ‚ค์ฝ”๋“œ 0
  • ์•„์Šคํ‚ค์ฝ”๋“œ๊ฐ€ 'M' < 'P' ์Œ์ˆ˜๋ฐ˜ํ™˜
  • ์•„์Šคํ‚ค์ฝ”๋“œ๊ฐ€ 'M' > 'D' ์–‘์ˆ˜๋ฐ˜ํ™˜
#include <stdio.h>
#include <string.h>

int main() {

        char str1[] = "Loki MCU";
        char str2[] = "Loki MCU";

        printf("strcmp(%s, %s)\t = %d\n", str1, str2, strcmp(str1, str2));                   // ๋ฌธ์ž์—ด ๊ฐ™๋‹ค : 0 ๋ฐ˜ํ™˜
        printf("strcmp(%s, %s)\t = %d\n", str1, "Loki PCU", strcmp(str1, "Loki PCU"));       // ๋ฌธ์ž์—ด : ์Œ์ˆ˜ ๋ฐ˜ํ™˜
        printf("strcmp(%s, %s)\t = %d\n", str1, "Loki DCU", strcmp(str1, "Loki DCU"));       // ๋ฌธ์ž์—ด : ์–‘์ˆ˜ ๋ฐ˜ํ™˜
}

strncmp ๋น„๊ต


const char* str1 = "LokiMcinema";
const char* str2 = "LokiDcinema";
strncmp(str1, str2, 4);           // Loki ๊นŒ์ง€ ๋ฌธ์ž์—ด ๊ฐ™๋‹ค : 0 ๋ฐ˜ํ™˜
strncmp(str1, str2, 5);           // 'M' -  'D' : 9 ๋ฐ˜ํ™˜ cf) M : 120 D : 111
  • 4๊ธ€์ž ๋น„๊ต์‹œ Loki๊นŒ์ง€ ์ „๋ถ€ ๊ฐ™๋‹ค
  • 5๊ธ€์ž ๋น„๊ต์‹œ 'M' - 'D' : 9 ๋ฐ˜ํ™˜ cf) M : 120 D : 111

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

int main() {
        const char* str1 = "LokiMcinema";
        const char* str2 = "LokiDcinema";
        printf("strncmp(%s, %s, 4)\t = %d\n", str1, str2, strncmp(str1, str2, 4));
        printf("strncmp(%s, %s, 5)\t = %d\n", str1, str2, strncmp(str1, str2, 5));
}