oracular (3) strverscmp.3.gz

Provided by: manpages-es-dev_4.23.1-1_all bug

NOMBRE

       strverscmp - compara dos cadenas de versión

BIBLIOTECA

       Biblioteca Estándar C (libc, -lc)

SINOPSIS

       #define _GNU_SOURCE         /* Vea feature_test_macros(7) */
       #include <string.h>

       int strverscmp(const char *s1, const char *s2);

DESCRIPCIÓN

       A  menudo  se dispone de los ficheros jan1, jan2, ..., jan9, jan10, ...  y parece incorrecto cuando ls(1)
       los ordena como jan1, jan10, ..., jan2, ..., jan9.  Para solucionar esto, GNU introdujo la  opción  -v  a
       ls(1), que es implementada usando versionsort(3), que a su vez utiliza strverscmp().

       De  esta  manera,  la  tarea  de  strverscmp()  es  comparar dos cadenas y encontrar el orden "correcto",
       mientras que strcmp(3) solamente encuentra el orden lexicográfico. Esta función no usa  la  categoría  de
       localización  LC_COLLATE, por lo que se utiliza sobre todo en situaciones donde se espera que las cadenas
       esten en formato ASCII.

       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.

VALOR DEVUELTO

       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.

ATRIBUTOS

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

       ┌───────────────────────────────────────────────────────────────┬────────────────────┬───────────────────┐
       │InterfazAtributoValor             │
       ├───────────────────────────────────────────────────────────────┼────────────────────┼───────────────────┤
       │strverscmp()                                                   │ Seguridad del hilo │ Multi-hilo seguro │
       └───────────────────────────────────────────────────────────────┴────────────────────┴───────────────────┘

ESTÁNDARES

       GNU.

EJEMPLOS

       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

   Código fuente

       #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);
       }

VÉASE TAMBIÉN

       rename(1), strcasecmp(3), strcmp(3), strcoll(3)

TRADUCCIÓN

       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
       ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩  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⟩.