.\" -*- coding: UTF-8 -*- '\" t .\" Copyright (C) 2001 Andries Brouwer .\" and Copyright (C) 2016 Michael Kerrisk .\" .\" SPDX-License-Identifier: Linux-man-pages-copyleft .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH strverscmp 3 "15 Junio 2024" "Páginas de Manual de Linux 6.9.1" .SH NOMBRE strverscmp \- compara dos cadenas de versión .SH BIBLIOTECA Biblioteca Estándar C (\fIlibc\fP, \fI\-lc\fP) .SH SINOPSIS .nf \fB#define _GNU_SOURCE\fP /* Vea feature_test_macros(7) */ \fB#include \fP .P \fBint strverscmp(const char *\fP\fIs1\fP\fB, const char *\fP\fIs2\fP\fB);\fP .fi .SH DESCRIPCIÓN .\" classical solution: "rename jan jan0 jan?" A menudo se dispone de los ficheros \fIjan1\fP, \fIjan2\fP, ..., \fIjan9\fP, \fIjan10\fP, ... y parece incorrecto cuando \fBls\fP(1) los ordena como \fIjan1\fP, \fIjan10\fP, ..., \fIjan2\fP, ..., \fIjan9\fP. Para solucionar esto, GNU introdujo la opción \fI\-v\fP a \fBls\fP(1), que es implementada usando \fBversionsort\fP(3), que a su vez utiliza \fBstrverscmp\fP(). .P De esta manera, la tarea de \fBstrverscmp\fP() es comparar dos cadenas y encontrar el orden "correcto", mientras que \fBstrcmp\fP(3) solamente encuentra el orden lexicográfico. Esta función no usa la categoría de localización \fBLC_COLLATE\fP, por lo que se utiliza sobre todo en situaciones donde se espera que las cadenas esten en formato ASCII. .P 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 \fBstrcmp\fP 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 \fI000\fP, \fI00\fP, \fI01\fP, \fI010\fP, \fI09\fP, \fI0\fP, \fI1\fP, \fI9\fP, \fI10\fP. .SH "VALOR DEVUELTO" La función \fBstrverscmp\fP() devuelve un entero menor que, igual a, o mayor que cero si \fIs1\fP es, respectivamente, anterior, igual, o posterior a \fIs2\fP. .SH ATRIBUTOS Para obtener una explicación de los términos usados en esta sección, véase \fBattributes\fP(7). .TS allbox; lbx lb lb l l l. Interfaz Atributo Valor T{ .na .nh \fBstrverscmp\fP() T} Seguridad del hilo Multi\-hilo seguro .TE .\" FIXME: The marking is different from that in the glibc manual, .\" which has: .\" .\" strverscmp: MT-Safe locale .\" .\" glibc manual says strverscmp should have marking locale because it calls .\" isdigit() multiple times and isdigit() uses locale variable. .\" But isdigit() has two implementations. With different compiling conditions, .\" we may call isdigit() in macro, then strverscmp() should not have locale .\" problem. .SH ESTÁNDARES GNU. .SH EJEMPLOS The program below can be used to demonstrate the behavior of \fBstrverscmp\fP(). It uses \fBstrverscmp\fP() to compare the two strings given as its command\-line arguments. An example of its use is the following: .P .in +4n .EX $ \fB./a.out jan1 jan10\fP jan1 < jan10 .EE .in .SS "Código fuente" .\" SRC BEGIN (strverscmp.c) \& .EX #define _GNU_SOURCE #include #include #include \& int main(int argc, char *argv[]) { int res; \& if (argc != 3) { fprintf(stderr, "Usage: %s \[rs]n", argv[0]); exit(EXIT_FAILURE); } \& res = strverscmp(argv[1], argv[2]); \& printf("%s %s %s\[rs]n", argv[1], (res < 0) ? "<" : (res == 0) ? "==" : ">", argv[2]); \& exit(EXIT_SUCCESS); } .EE .\" SRC END .SH "VÉASE TAMBIÉN" \fBrename\fP(1), \fBstrcasecmp\fP(3), \fBstrcmp\fP(3), \fBstrcoll\fP(3) .PP .SH TRADUCCIÓN La traducción al español de esta página del manual fue creada por Miguel Pérez Ibars . .PP Esta traducción es documentación libre; lea la .UR https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License Version 3 .UE o posterior con respecto a las condiciones de copyright. No existe NINGUNA RESPONSABILIDAD. .PP Si encuentra algún error en la traducción de esta página del manual, envíe un correo electrónico a .MT debian-l10n-spanish@lists.debian.org .ME .