Función de la biblioteca C -setlocale()

Biblioteca estándar de C - <locale.h>

Descripción

setlocalees la biblioteca estándar de C<locale.h>una función en <locale.h>, utilizada para establecer o consultar la información de localización del programa. Permite al programador especificar la configuración regional utilizada para la clasificación de caracteres, conversión de caracteres, formato de moneda, formato de fecha y hora, formato numérico, etc.

Declaración

A continuación se muestra la declaración de la función setlocale().

#include <locale.h>

char *setlocale(int category, const char *locale);

Parámetros

  • category: especifica la categoría de localización a establecer o consultar. Puede ser una de las siguientes macros:

    • LC_ALL: establece o consulta todas las categorías de localización.
    • LC_COLLATE: establece o consulta la información de localización para la comparación de cadenas.
    • LC_CTYPE: establece o consulta la información de localización para el procesamiento de caracteres.
    • LC_MONETARY: establece o consulta la información de localización para el formato de moneda.
    • LC_NUMERIC: establece o consulta la información de localización para el formato numérico.
    • LC_TIME: establece o consulta la información de localización para el formato de hora.
  • locale: especifica la información de localización a establecer. Puede ser uno de los siguientes:

    • "": se establece según la configuración predeterminada de las variables de entorno del usuario.
    • NULL: consulta la información de localización actual.
    • Nombre de configuración regional específico: como "en_US.UTF-8", se utiliza para establecer una configuración regional específica.

Valor de retorno

  • SilocaleParaNULL, devuelve un puntero a la cadena de información de configuración regional actual.
  • SilocaleNoNULLy se establece correctamente, devuelve un puntero a la cadena de información de configuración regional.
  • SilocaleNoNULLy falla el establecimiento, devuelveNULL。

Ejemplo

El siguiente es un código de ejemplo que utiliza setlocale, mostrando cómo establecer y consultar la información de localización.

Establecer y consultar la información de localización:

Ejemplo

#include <stdio.h>
#include <locale.h>

int main() {
    // Consultar la información de localización actual
    printf("Default locale: %s\n", setlocale(LC_ALL, NULL));

    // Establecer la información de localización según la configuración predeterminada de las variables de entorno del usuario
    setlocale(LC_ALL, "");

    // Obtener e imprimir la información de localización actual
    printf("Locale after setting to '': %s\n", setlocale(LC_ALL, NULL));

    // Establecer la información de localización como "en_US.UTF-8"
    if (setlocale(LC_ALL, "en_US.UTF-8") != NULL) {
        printf("Locale after setting to 'en_US.UTF-8': %s\n", setlocale(LC_ALL, NULL));
    } else {
        printf("Unable to set locale to 'en_US.UTF-8'\n");
    }

    return 0;
}

Compilemos y ejecutemos el programa anterior, esto producirá el siguiente resultado:

Default locale: C
Locale after setting to '': zh_CN.UTF-8
Locale after setting to 'en_US.UTF-8': en_US.UTF-8

Formatear números según la información de localización:

Ejemplo

#include <stdio.h>
#include <locale.h>

int main() {
    // Establecer la información de localización según la configuración predeterminada de las variables de entorno del usuario
    setlocale(LC_NUMERIC, "");

    // Imprimir el número de punto flotante localizado
    printf("Formatted number: %'.2f\n", 1234567.89);

    // Establecer la información de localización como "de_DE.UTF-8" (alemán - Alemania)
    if (setlocale(LC_NUMERIC, "de_DE.UTF-8") != NULL) {
        printf("Locale after setting to 'de_DE.UTF-8': %s\n", setlocale(LC_NUMERIC, NULL));
        printf("Formatted number in German locale: %'.2f\n", 1234567.89);
    } else {
        printf("Unable to set locale to 'de_DE.UTF-8'\n");
    }

    return 0;
}

Compilemos y ejecutemos el programa anterior, esto producirá el siguiente resultado:

Formatted number: 1,234,567.89
Locale after setting to 'de_DE.UTF-8': de_DE.UTF-8
Formatted number in German locale: 1234567,89

Explicación detallada

1. Establecer y consultar la información de localización

  • Al comienzo del programa, se puede usarsetlocale(LC_ALL, "");establecer la información de localización del programa según la configuración predeterminada de las variables de entorno del usuario. Las variables de entorno del usuario generalmente son configuradas por el sistema operativo o el usuario, especificando la configuración regional predeterminada que el programa debe usar en tiempo de ejecución.
  • Se puede usarsetlocale(LC_ALL, "en_US.UTF-8");u otra cadena de configuración regional para establecer una configuración regional específica.
  • Usandosetlocale(LC_ALL, NULL);consultar la información de localización actual, y devuelve una cadena que describe la configuración regional actual.

2. Categorías de localización

Cada categoría controla un aspecto específico del programa:

  • LC_COLLATE: afecta las funciones de comparación de cadenas (comostrcollystrxfrm)。
  • LC_CTYPE: afecta las funciones de clasificación y conversión de caracteres (comoisalphaytoupper)。
  • LC_MONETARY: afecta las funciones relacionadas con el formato de moneda (comolocaleconv)。
  • LC_NUMERIC: afecta el formato numérico (como el punto decimal y los separadores de miles).
  • LC_TIME: afecta el formato de fecha y hora (comostrftime)。

Resumen

setlocaleLa función es una herramienta importante para establecer y consultar la información de localización del programa. Permite que el programa se adapte a diferentes idiomas y hábitos culturales, logrando así internacionalización y localización. Mediante el uso desetlocale, el programa puede procesar y mostrar correctamente información localizada como cadenas, números, moneda, fecha y hora.

Biblioteca estándar de C - <locale.h>

Otras extensiones