setlocale
|
Definido en el encabezado
<locale.h>
|
||
|
char
*
setlocale
(
int
category,
const
char
*
locale
)
;
|
||
La función
setlocale
instala la configuración regional del sistema especificada o una porción de ella como la nueva configuración regional C. Las modificaciones permanecen en efecto e influyen en la ejecución de todas las funciones de la biblioteca C sensibles a la configuración regional hasta la siguiente llamada a
setlocale
. Si
locale
es un puntero nulo,
setlocale
consulta la configuración regional C actual sin modificarla.
Contenidos |
Parámetros
| categoría | - |
identificador de categoría de configuración regional, uno de las
LC_xxx
macros. Puede ser nulo.
|
| configuración regional | - | identificador de configuración regional específico del sistema. Puede ser "" para la configuración regional preferida del usuario o "C" para la configuración regional mínima |
Valor de retorno
puntero a una cadena terminada en nulo que identifica la configuración regional C después de aplicar los cambios, si los hay, o puntero nulo en caso de fallo.
Una copia de la cadena devuelta junto con la categoría utilizada en esta llamada a
setlocale
puede utilizarse posteriormente en el programa para restaurar la configuración regional al estado existente al final de esta llamada.
Notas
Durante el inicio del programa, el equivalente de setlocale ( LC_ALL , "C" ) ; se ejecuta antes de que se ejecute cualquier código del usuario.
Aunque el tipo de retorno es char * , modificar los caracteres apuntados es comportamiento indefinido.
Debido a que
setlocale
modifica el estado global que afecta la ejecución de funciones dependientes de la configuración regional, es comportamiento indefinido llamarlo desde un hilo, mientras otro hilo está ejecutando cualquiera de las siguientes funciones:
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 también define una configuración regional denominada "POSIX", que siempre está accesible y es exactamente equivalente a la configuración regional mínima predeterminada "C".
POSIX también especifica que el puntero devuelto, no solo el contenido de la cadena apuntada, puede quedar invalidado por llamadas posteriores a
setlocale
.
Ejemplo
#include <locale.h> #include <stdio.h> #include <time.h> #include <wchar.h> int main(void) { // la configuración regional C será inglés habilitado para UTF-8; // el punto decimal será alemán // el formato de fecha y hora será japonés 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); }
Salida posible:
Number: 3,14 Date: 月曜日 2017年09月25日 13時00分15秒
Referencias
- Estándar C23 (ISO/IEC 9899:2024):
-
- 7.11.1.1 La función setlocale (p: TBD)
- Estándar C17 (ISO/IEC 9899:2018):
-
- 7.11.1.1 La función setlocale (p: 163-164)
- Estándar C11 (ISO/IEC 9899:2011):
-
- 7.11.1.1 La función setlocale (p: 224-225)
- Estándar C99 (ISO/IEC 9899:1999):
-
- 7.11.1.1 La función setlocale (p: 205-206)
- Estándar C89/C90 (ISO/IEC 9899:1990):
-
- 4.4.1.1 La función setlocale
Véase también
|
categorías de configuración regional para
setlocale
(constante macro) |
|
|
Documentación de C++
para
setlocale
|
|
Enlaces externos
| 1. | Lista de nombres de configuración regional de Windows . |
| 2. | Lista de nombres de configuración regional de Linux . |