strverscmp(3) Library Functions Manual strverscmp(3) NOMBRE strverscmp - compara dos cadenas de version BIBLIOTECA Biblioteca Estandar C (libc, -lc) SINOPSIS #define _GNU_SOURCE /* Vea feature_test_macros(7) */ #include int strverscmp(const char *s1, const char *s2); DESCRIPCION 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 opcion -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 lexicografico. Esta funcion no usa la categoria de localizacion 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 funcion es lo siguiente. Si ambas cadenas son iguales, devuelve 0. En otro caso encuentra la posicion entre dos bytes con la propiedad de que antes de esta posicion ambas cadenas son iguales, mientras que justamente despues hay una diferencia. Encuentra las cadenas de digitos consecutivos mas largas que contienen (o comienzan o terminan en) esta posicion. Si una o ambas estan vacias, devuelve lo que strcmp hubiera devuelto (ordenamiento numerico de los valores de byte). En otro caso, compara ambas cadenas de digitos numericamente, donde las cadenas de digitos con uno o mas ceros al principio son interpretadas como si tuvieran un punto decimal delante (asi que las cadenas de digitos con mas ceros al principio aparecen antes que aquellas cadenas de digitos con menos ceros al principio). Asi, el ordenamiento es 000, 00, 01, 010, 09, 0, 1, 9, 10. VALOR DEVUELTO La funcion 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 explicacion de los terminos usados en esta seccion, vease attributes(7). +-----------------------------+--------------------+-------------------+ |Interfaz | Atributo | Valor | +-----------------------------+--------------------+-------------------+ |strverscmp() | Seguridad del hilo | Multi-hilo seguro | +-----------------------------+--------------------+-------------------+ ESTANDARES 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 Codigo fuente #define _GNU_SOURCE #include #include #include int main(int argc, char *argv[]) { int res; if (argc != 3) { fprintf(stderr, "Usage: %s \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); } VEASE TAMBIEN rename(1), strcasecmp(3), strcmp(3), strcoll(3) TRADUCCION La traduccion al espanol de esta pagina del manual fue creada por Miguel Perez Ibars Esta traduccion es documentacion libre; lea la GNU General Public License Version 3 o posterior con respecto a las condiciones de copyright. No existe NINGUNA RESPONSABILIDAD. Si encuentra algun error en la traduccion de esta pagina del manual, envie un correo electronico a . Paginas de manual de Linux 6.06 31 Octubre 2023 strverscmp(3)