Funcions de localització C
En informàtica, les funcions de localització C són un grup de funcions en el llenguatge de programació C que implementen rutines bàsiques de localització.[1][2] Les funcions s'utilitzen en programes multilingües per adaptar-se a la configuració regional específica. En particular, es pot modificar la manera de mostrar els números i la moneda. Aquests paràmetres afecten el comportament de les funcions d'entrada/sortida a la biblioteca estàndard C.[3]
Tipus | C header file (en) |
---|---|
Part de | C standard library, Biblioteca estàndard de C++ i Biblioteca C POSIX |
Característiques tècniques | |
Plataforma | C standard library |
Visió general de les funcions
modificaLes funcions i els tipus de localització C es defineixen alocale.h (clocalecapçalera en C++).[4][5]
Funció | Descripció |
---|---|
setlocale | estableix i obté la configuració regional C actual |
localconv | retorna detalls de format numèric i monetari de la configuració regional actual |
Crítica
modificaLes funcions de localització estàndard C són criticades perquè l'estat de localització s'emmagatzema globalment. Això vol dir que en un programa donat totes les operacions que involucren un local només poden utilitzar un local alhora. Com a resultat, és molt difícil implementar programes que utilitzen més d'una configuració regional.[6]
Les funcions alteren el comportament de printf/scanf/strtod que sovint s'utilitzen per escriure dades desades en un fitxer o en altres programes. El resultat és que un fitxer desat en una configuració regional no es podrà llegir en una altra configuració regional o no es podrà llegir en absolut a causa de suposicions com ara "els números acaben en caràcters de coma". La majoria de programari a gran escala obliga la configuració regional a "C" (o un altre valor fix) per solucionar aquests problemes.
Exemple
modifica#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
int main(void)
{
/* Locale is set to "C" before this. This call sets it
to the "current locale" by reading environment variables: */
setlocale(LC_ALL, "");
const struct lconv * const currentlocale = localeconv();
printf("In the current locale, the default currency symbol is: %s\n",
currentlocale->currency_symbol);
return EXIT_SUCCESS;
}
Referències
modifica- ↑ ISO/IEC 9899:1999 specification (en anglès).
- ↑ Prata, Stephen. C primer plus (en anglès). Sams Publishing, 2004. ISBN 0-672-32696-5.
- ↑ «ISO/IEC 9899:201x» (en anglès), 12-04-2011. Arxivat de l'original el 29 March 2018.
- ↑ «locale.h» (en anglès). utas.edu.au. infosys. Arxivat de l'original el 4 June 2012. [Consulta: 14 setembre 2011].
- ↑ «openbsd/src» (en anglès). GitHub. [Consulta: 9 abril 2018].
- ↑ «The Standard C Locale and the Standard C++ Locales» (en anglès). Rogue Wave Software, Inc.. Arxivat de l'original el 19 February 2020. [Consulta: 10 novembre 2011].