Función setlocale ANSI C
char *setlocale(int categoria, const char *localidad);
La función setlocale selecciona la porción apropiada de la localidad del programa especificado por los argumentos categoria y localidad. La función setlocale puede ser usada para cambiar o preguntar la localidad actual total del programa o porciones de ello. El valor de LC_ALL para categoria nombra la localidad total del programa; los otros valores para categoria nombran solamente una porción de la localidad del programa. LC_COLLATE afecta el comportamiento de las funciones strcoll y strxfrm. LC_CTYPEafecta el comportamiento de las funciones que manipulan caracteres y de las funciones de multibyte. LC_MONETARY afecta a la información de formato monetario retornada por la función localeconv. LC_NUMERIC afecta el carácter de la coma decimal para las funciones de formato de entrada/salida, las funciones de conversión de cadenas, y de la información de formato no monetario retornada por localeconv. LC_TIME afecta el comportamiento de strftime.
Un valor de "C" para localidad especifica el entorno mínimo para la traducción de C; un valor de "" para localidad especifica el entorno nativo definido según la implementación. Otras cadenas definidas según la implementación pueden ser pasadas a setlocale. Al comienzo de la ejecución del programa, la equivalente a setlocale( LC_ALL, "C" ); es ejecutada.
Valor de retorno:
Si un puntero a una cadena es dado para localidad y la selección puede ser llevado a cabo, la función setlocale retorna un puntero a la cadena asociada con la categoria especificada para la localidad nueva. Si la selección no se pudo realizar, la función setlocale retorna un puntero nulo y la localidad del programa no varía.
Un puntero nulo para localidad causa la función setlocale retornar un puntero a la cadena asociado con la categoria de la localidad actual del programa; la localidad actual del programa no varía.
El puntero a la cadena retornado por la función setlocale es tal que una llamada posterior con ese valor de la cadena y su categoría asociada restaurará la parte de la localidad del programa. La cadena puntada será modificada por el programa, pero puede ser sobreescrito por una llamada a la función setlocale.
Ejemplo:
#include <stdio.h> #include <locale.h> #include <string.h> int main() { struct lconv *lcPtr; char *s; printf( "Localidad: \"%s\"\n\n", setlocale( LC_ALL, "C" ) ); lcPtr = localeconv(); printf( "decimal_point = \"%s\"\t\t", lcPtr->decimal_point ); printf( "thousands_sep = \"%s\"\n", lcPtr->thousands_sep ); printf( "grouping = \"%s\"\t\t\t", lcPtr->grouping ); printf( "int_curr_symbol = \"%s\"\n", lcPtr->int_curr_symbol ); printf( "currency_symbol = \"%s\"\t\t", lcPtr->currency_symbol ); printf( "mon_decimal_point = \"%s\"\n", lcPtr->mon_decimal_point ); printf( "mon_grouping = \"%s\"\t\t", lcPtr->mon_grouping ); printf( "positive_sign = \"%s\"\n", lcPtr->positive_sign ); printf( "negative_sign = \"%s\"\n", lcPtr->negative_sign ); printf( "int_frac_digits = (char) %d\t", lcPtr->int_frac_digits ); printf( "frac_digits = (char) %d\n", lcPtr->frac_digits ); printf( "p_cs_precedes = (char) %d\t", lcPtr->p_cs_precedes ); printf( "p_sep_by_space = (char) %d\n", lcPtr->p_sep_by_space ); printf( "n_cs_precedes = (char) %d\t", lcPtr->n_cs_precedes ); printf( "n_sep_by_space = (char) %d\n", lcPtr->n_sep_by_space ); printf( "p_sign_posn = (char) %d\t", lcPtr->p_sign_posn ); printf( "n_sign_posn = (char) %d\n", lcPtr->n_sign_posn ); printf( "\nCambiamos algunas variables para concordar con la localidad de " ); printf( "España:\n" ); lcPtr->decimal_point = ","; lcPtr->thousands_sep = "."; lcPtr->grouping = "3"; printf( "decimal_point = \"%s\"\n", lcPtr->decimal_point ); printf( "thousands_sep = \"%s\"\n", lcPtr->thousands_sep ); printf( "grouping = \"%s\"\n", lcPtr->grouping ); return 0; }