Función localeconv ANSI C
struct lconv *localeconv(void );
La función localeconv asigna los componentes de un objeto con tipo struct lconv con valores apropiados para el formateo de cantidades numéricas (monetarias y otras) según las reglas de la localidad actual.
Los miembros de la estructura con tipo char * son punteros a cadenas, cualquiera de ellos (excepto decimal_point) puede apuntar a "", para indicar que el valor no está disponible en la localidad actual o es de longitud cero. Los miembros con tipo char no son números negativos, cualquiera de ellos puede ser CHAR_MAX para indicar que el valor no está disponible en la localidad actual. Los miembros incluyen los siguientes:
- char *decimal_point
- char *thousands_sep
- char *grouping
- char *int_curr_symbol
- char *currency_symbol
- char *mon_decimal_point
- char *mon_thousands_sep
- char *mon_grouping
- char *positive_sign
- char *negative_sign
- char int_frac_digits
- char frac_digits
- char p_cs_precedes
- char p_sep_by_space
- char n_cs_precedes
- char n_sep_by_space
- char p_sign_posn
- char n_sign_posn
Los elementos de grouping y mon_grouping son interpretados según lo siguiente:
CHAR_MAX | No se realiza más agrupaciones |
0 | El elemento anterior ha de ser usado repetidamente para el resto de los dígitos |
otro | El valor entero es el número de dígitos que forman parte del grupo actual. El elemento posterior es examinado para determinar el tamaño del siguiente grupo de dígitos antes del grupo actual. |
Los valores de p_sign_posn y n_sign_posn son interpretados según los siguiente:
0 | Los paréntesis rodean la cantidad y current_symbol |
1 | La cadena de signo precede la cantidad y current_symbol |
2 | La cadena de signo sucede la cantidad y current_symbol |
3 | La cadena de signo inmediatamente precede la cantidad y current_symbol |
4 | La cadena de signo inmediatamente sucede la cantidad y current_symbol |
Valor de retorno:
La función localeconv retorna un puntero al objeto rellenado. La estructura apuntado por el valor retornado no será modificado por el programa, pero puede ser sobreescrito por una llamada posterior a la función.localeconv. Además, llamadas a la función setlocale con categorías LC_ALL, LC_MONETARY, o LC_NUMERIC pueden sobreescribir el contenido de la estructura.
Ejemplo:
#include <stdio.h> #include <locale.h> #includeint 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; }