Fonctions de localisation C - C localization functions
Bibliothèque standard C |
---|
Thèmes généraux |
En-têtes divers |
En informatique , les fonctions de localisation C sont un groupe de fonctions dans le langage de programmation C implémentant des routines de localisation de base. Les fonctions sont utilisées dans les programmes multilingues pour s'adapter aux paramètres régionaux spécifiques. En particulier, le mode d'affichage des nombres et de la devise peut être modifié. Ces paramètres affectent le comportement des fonctions d' entrée / sortie dans la bibliothèque C Standard.
Aperçu des fonctions
Les fonctions et types de localisation C sont définis dans locale.h (en - tête clocale en C ++).
Fonction | La description |
---|---|
setlocale | définit et obtient la locale C actuelle |
localeconv | renvoie les détails de formatage numérique et monétaire des paramètres régionaux actuels |
Critique
Les fonctions de localisation standard C sont critiquées car l'état de localisation est stocké globalement. Cela signifie que dans un programme donné, toutes les opérations impliquant une locale ne peuvent utiliser qu'une seule locale à la fois. Par conséquent, il est très difficile d'implémenter des programmes qui utilisent plusieurs paramètres régionaux.
Les fonctions modifient le comportement de printf / scanf / strtod qui sont souvent utilisés pour écrire des données enregistrées dans un fichier ou dans d'autres programmes. Le résultat est qu'un fichier enregistré dans une locale ne sera pas lisible dans une autre locale, ou ne sera pas du tout lisible en raison d'hypothèses telles que "les nombres se terminent par des virgules". La plupart des logiciels à grande échelle obligent les paramètres régionaux à "C" (ou une autre valeur fixe) pour contourner ces problèmes.
Exemple
#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;
}