strverscmp(3) - wariua/manpages-ko GitHub Wiki
strverscmp - λ λ²μ λ¬Έμμ΄ λΉκ΅νκΈ°
#define _GNU_SOURCE /* feature_test_macros(7) μ°Έκ³ */
#include <string.h>
int strverscmp(const char *s1, const char *s2);
jan1
, jan2
, ..., jan9
, jan10
, ... μ΄λ° νμΌλ€μ΄ μλλ° ls(1)
νλ©΄ μμκ° jan1
, jan10
, ..., jan2
, ..., jan9
μμΌλ‘ λμ€λ κ² μ΄μν΄ λ³΄μΌ λκ° μ’
μ’
μλ€. μ΄κ±Έ λ°λ‘μ‘κΈ° μν΄ GNUμμ ls(1)
μ -v
μ΅μ
μ λμ
νλλ°, κ·Έ ꡬνμμ versionsort(3)λ₯Ό μ¬μ©νλ©° λ€μ κ±°κΈ°μ strverscmp()
λ₯Ό μ¬μ©νλ€.
μΈμ¦ strcmp(3)
κ° μ¬μ μ μμλ§ μ°Ύλ λ°λ©΄ strverscmp()
κ° νλ μΌμ λ λ¬Έμμ΄μ λΉκ΅νμ¬ "μ¬λ°λ₯Έ" μμλ₯Ό μ°Ύλ κ²μ΄λ€. μ΄ ν¨μλ λ‘μΊ λ²μ£Ό LC_COLLATE
λ₯Ό μ¬μ©νμ§ μλλ€. λ°λΌμ κΈ°λ³Έμ μΌλ‘ λ¬Έμμ΄μ΄ ASCIIμΌ κ²μΌλ‘ μμλλ μν©λ€μ μν κ²μ΄λ€.
μ΄ ν¨μκ° νλ μΌμ μ΄λ λ€. λ λ¬Έμμ΄μ΄ κ°μΌλ©΄ 0μ λ°ννλ€. κ·Έλ μ§ μμΌλ©΄ μμμλ λ λ¬Έμμ΄μ΄ κ°κ³ κ±°κΈ°λΆν°λ λ€λ₯Έ μμΉλ₯Ό μ°Ύλλ€. κ·Έλ¦¬κ³ κ·Έ μμΉλ₯Ό ν¬ν¨νλ (κ±°κΈ°μ μμνκ±°λ λλ μλ μλ) κ°μ₯ κΈ΄ μ°μλ μ«μ μ΄μ μ°Ύλλ€. μμͺ½ λͺ¨λλ μ΄λ νμͺ½μμ μ΄ μ΄μ΄ λΉμ΄ μμΌλ©΄ strcmp(3)
κ° λ°νν κ²°κ³Όλ₯Ό λ°ννλ€ (λ°μ΄νΈ κ°μ ν¬κΈ°μ λ°λΌ μ λ ¬). κ·Έλ μ§ μμΌλ©΄ λ μ«μ μ΄μ μλ‘μ λΉκ΅νλ€. μ΄λ μ λμ 0μ΄ ν κ° μ΄μ μμΌλ©΄ κ·Έ μμ μμμ μ΄ μλ κ²μ²λΌ ν΄μνλ€. (κ·Έλμ νΉν μ λμ 0μ΄ λ λ§μ μ«μ μ΄μ΄ μ λμ 0μ΄ λ μ μ μ«μ μ΄ μμ μ€λλ‘ νλ€.) 그리νμ¬ 000
, 00
, 01
, 010
, 09
, 0
, 1
, 9
, 10
μμκ° λλ€.
strverscmp()
ν¨μλ s1
μ΄ s2
λ³΄λ€ μμ΄κ±°λ, κ°κ±°λ, λ€μΈ κ²½μ°μ κ°κ° 0λ³΄λ€ μκ±°λ, κ°κ±°λ, ν° μ μλ₯Ό λ°ννλ€.
μ΄ μ μμ μ¬μ©νλ μ©μ΄λ€μ λν μ€λͺ μ attributes(7)λ₯Ό 보λΌ.
μΈν°νμ΄μ€ | μμ± | κ° |
---|---|---|
strverscmp() |
μ€λ λ μμ μ± | MT-Safe |
μ΄ ν¨μλ GNU νμ₯μ΄λ€.
μλ νλ‘κ·Έλ¨μ μ΄μ©ν΄ strverscmp()
μ λμ λ°©μμ λ³Ό μ μλ€. strverscmp()
λ₯Ό μ¬μ©ν΄ λͺ
λ Ήν μΈμλ‘ λ°μ λ λ¬Έμμ΄μ λΉκ΅νλ€. μ©λ‘λ λ€μκ³Ό κ°λ€.
$ ./a.out jan1 jan10
jan1 < jan10
#define _GNU_SOURCE
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
int
main(int argc, char *argv[])
{
int res;
if (argc != 3) {
fprintf(stderr, "Usage: %s <string1> <string2>\n", argv[0]);
exit(EXIT_FAILURE);
}
res = strverscmp(argv[1], argv[2]);
printf("%s %s %s\n", argv[1],
(res < 0) ? "<" : (res == 0) ? "==" : ">", argv[2]);
exit(EXIT_SUCCESS);
}
rename(1)
, strcasecmp(3)
, strcmp(3)
, strcoll(3)
2019-03-06