En informática , las funciones de localización de C son un grupo de funciones del lenguaje de programación C que implementan rutinas de localización básicas. [1] [2] Las funciones se utilizan en programas multilingües para adaptarse a la configuración regional específica. En particular, se puede modificar la forma de mostrar números y monedas. Estas configuraciones afectan el comportamiento de las funciones de entrada/salida en la biblioteca estándar de C. [3]
Descripción general de funciones
Las funciones y tipos de localización de C se definen en locale.h ( encabezado clocale en C++). [4] [5]
Crítica
Las funciones de localización estándar de C son criticadas porque el estado de la localización se almacena globalmente. Esto significa que en un programa determinado todas las operaciones que involucran una configuración regional pueden utilizar solo una configuración regional a la vez. Como resultado, es muy difícil implementar programas que utilicen más de una configuración regional. [6]
Las funciones modifican el comportamiento de printf/scanf/strtod, que suelen utilizarse para escribir datos guardados en un archivo o en otros programas. El resultado es que un archivo guardado en una configuración regional no se podrá leer en otra configuración regional, o no se podrá leer en absoluto debido a suposiciones como "los números terminan en caracteres de coma". La mayoría de los programas de gran escala fuerzan la configuración regional a "C" (u otro valor fijo) para solucionar estos problemas.
Ejemplo
#include <stdio.h> #include <stdlib.h> #include <locale.h>
int main ( void ) { /* La configuración regional se establece en "C" antes de esto. Esta llamada la establece en la "configuración regional actual" leyendo las variables de entorno: */ setlocale ( LC_ALL , "" );
const struct lconv * const currentlocale = localeconv ();
printf ( "En la configuración regional actual, el símbolo de moneda predeterminado es: %s \n " ,
currentlocale -> currency_symbol );
devolver SALIDA_EXITO ; }
Véase también
Referencias
- ^ Especificación ISO/IEC 9899:1999 (PDF) . p. 204, § 7.11 Localización .
- ^ Prata, Stephen (2004). Introducción a C. Sams Publishing. Apéndice B, Sección V: La biblioteca estándar ANSI C con adiciones C99. ISBN 0-672-32696-5.
- ^ "ISO/IEC 9899:201x" (PDF) . 12 de abril de 2011. pág. 181. Archivado desde el original (PDF) el 29 de marzo de 2018.
- ^ "locale.h". utas.edu.au . infosys. Archivado desde el original el 4 de junio de 2012 . Consultado el 14 de septiembre de 2011 .
- ^ "openbsd/src". GitHub . Consultado el 9 de abril de 2018 .
- ^ "La configuración regional estándar de C y las configuraciones regionales estándar de C++". Rogue Wave Software, Inc. 1996. Archivado desde el original el 19 de febrero de 2020. Consultado el 10 de noviembre de 2011 .