setlocale
|
Défini dans l'en-tête
<locale.h>
|
||
|
char
*
setlocale
(
int
category,
const
char
*
locale
)
;
|
||
La fonction
setlocale
installe la locale système spécifiée ou une partie de celle-ci comme nouvelle locale C. Les modifications restent en vigueur et influencent l'exécution de toutes les fonctions de la bibliothèque C sensibles à la locale jusqu'au prochain appel à
setlocale
. Si
locale
est un pointeur nul,
setlocale
interroge la locale C actuelle sans la modifier.
Table des matières |
Paramètres
| catégorie | - |
identifiant de catégorie de paramètres régionaux, l'une des
LC_xxx
macros. Peut être nul.
|
| paramètres régionaux | - | identifiant de paramètres régionaux spécifique au système. Peut être "" pour les paramètres régionaux préférés de l'utilisateur ou "C" pour les paramètres régionaux minimaux |
Valeur de retour
pointeur vers une chaîne de caractères étroite terminée par un caractère nul identifiant les paramètres régionaux C après application des modifications, le cas échéant, ou pointeur nul en cas d'échec.
Une copie de la chaîne retournée ainsi que la catégorie utilisée dans cet appel à
setlocale
peut être utilisée ultérieurement dans le programme pour restaurer les paramètres régionaux à l'état qu'ils avaient à la fin de cet appel.
Notes
Pendant le démarrage du programme, l'équivalent de setlocale ( LC_ALL , "C" ) ; est exécuté avant l'exécution de tout code utilisateur.
Bien que le type de retour soit char * , modifier les caractères pointés est un comportement indéfini.
Étant donné que
setlocale
modifie l'état global qui affecte l'exécution des fonctions dépendantes de la locale, il s'agit d'un comportement indéfini de l'appeler depuis un thread, tandis qu'un autre thread exécute l'une des fonctions suivantes :
fprintf
,
isprint
,
iswdigit
,
localeconv
,
tolower
,
fscanf
,
ispunct
,
iswgraph
,
mblen
,
toupper
,
isalnum
,
isspace
,
iswlower
,
mbstowcs
,
towlower
,
isalpha
,
isupper
,
iswprint
,
mbtowc
,
towupper
,
isblank
,
iswalnum
,
iswpunct
,
setlocale
,
wcscoll
,
iscntrl
,
iswalpha
,
iswspace
,
strcoll
,
wcstod
,
isdigit
,
iswblank
,
iswupper
,
strerror
,
wcstombs
,
isgraph
,
iswcntrl
,
iswxdigit
,
strtod
,
wcsxfrm
,
islower
,
iswctype
,
isxdigit
.
POSIX définit également un paramètre régional nommé "POSIX", qui est toujours accessible et est exactement équivalent au paramètre régional minimal par défaut "C".
POSIX spécifie également que le pointeur retourné, et pas seulement le contenu de la chaîne pointée, peut être invalidé par des appels ultérieurs à
setlocale
.
Exemple
#include <locale.h> #include <stdio.h> #include <time.h> #include <wchar.h> int main(void) { // le paramètre régional C sera l'anglais avec support UTF-8 ; // le séparateur décimal sera allemand // le formatage de la date et de l'heure sera japonais setlocale(LC_ALL, "en_US.UTF-8"); setlocale(LC_NUMERIC, "de_DE.utf8"); setlocale(LC_TIME, "ja_JP.utf8"); wchar_t str[100]; time_t t = time(NULL); wcsftime(str, 100, L"%A %c", localtime(&t)); wprintf(L"Number: %.2f\nDate: %ls\n", 3.14, str); }
Sortie possible :
Number: 3,14 Date: 月曜日 2017年09月25日 13時00分15秒
Références
- Norme C23 (ISO/CEI 9899:2024) :
-
- 7.11.1.1 La fonction setlocale (p: TBD)
- Norme C17 (ISO/CEI 9899:2018) :
-
- 7.11.1.1 La fonction setlocale (p: 163-164)
- Norme C11 (ISO/IEC 9899:2011) :
-
- 7.11.1.1 La fonction setlocale (p: 224-225)
- Norme C99 (ISO/CEI 9899:1999) :
-
- 7.11.1.1 La fonction setlocale (p : 205-206)
- Norme C89/C90 (ISO/IEC 9899:1990) :
-
- 4.4.1.1 La fonction setlocale
Voir aussi
|
catégories de paramètres régionaux pour
setlocale
(constante macro) |
|
|
Documentation C++
pour
setlocale
|
|
Liens externes
| 1. | Liste des noms de paramètres régionaux Windows . |
| 2. | Liste des noms de paramètres régionaux Linux . |