strverscmp(3) Library Functions Manual strverscmp(3)

strverscmp - compara dos cadenas de versión

Biblioteca Estándar C (libc-lc)

#define _GNU_SOURCE         /* Vea feature_test_macros(7) */
#include <string.h>
int strverscmp(const char *s1, const char *s2);

For a dataset like jan1, jan2, ..., jan9, jan10, ... sorting it lexicographically yields jan1, jan10, ..., jan2, ..., jan9. The task of strverscmp() is to compare two strings yielding the former order, while strcmp(3) finds only the lexicographic order. This function does not use the locale category LC_COLLATE, so is meant mostly for situations where the strings are expected to be in ASCII. This is different from the ordering produced by sort(1) -V.

Lo que hace esta función es lo siguiente. Si ambas cadenas son iguales, devuelve 0. En otro caso encuentra la posición entre dos bytes con la propiedad de que antes de esta posición ambas cadenas son iguales, mientras que justamente después hay una diferencia. Encuentra las cadenas de dígitos consecutivos más largas que contienen (o comienzan o terminan en) esta posición. Si una o ambas están vacías, devuelve lo que strcmp hubiera devuelto (ordenamiento numérico de los valores de byte). En otro caso, compara ambas cadenas de dígitos numéricamente, donde las cadenas de dígitos con uno o más ceros al principio son interpretadas como si tuvieran un punto decimal delante (así que las cadenas de dígitos con más ceros al principio aparecen antes que aquellas cadenas de dígitos con menos ceros al principio). Así, el ordenamiento es 000, 00, 01, 010, 09, 0, 1, 9, 10.

La función strverscmp() devuelve un entero menor que, igual a, o mayor que cero si s1 es, respectivamente, anterior, igual, o posterior a s2.

Para obtener una explicación de los términos usados en esta sección, véase attributes(7).

Interfaz Atributo Valor
strverscmp() Seguridad del hilo Multi-hilo seguro

GNU.

The program below can be used to demonstrate the behavior of strverscmp(). It uses strverscmp() to compare the two strings given as its command-line arguments. An example of its use is the following:


$ ./a.out jan1 jan10
jan1 < jan10

#define _GNU_SOURCE
#include <stdio.h>
#include <stdlib.h>
#include <string.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)

La traducción al español de esta página del manual fue creada por Miguel Pérez Ibars <mpi79470@alu.um.es>

Esta traducción es documentación libre; lea la GNU General Public License Version 3 o posterior con respecto a las condiciones de copyright. No existe NINGUNA RESPONSABILIDAD.

Si encuentra algún error en la traducción de esta página del manual, envíe un correo electrónico a debian-l10n-spanish@lists.debian.org.

16 Diciembre 2024 Páginas de Manual de Linux 6.12