locale.h


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;
}