[C con Clase] Más de signos de puntuación

Antonio Gómez jagse en intercomgi.com
Mar Dic 14 20:42:07 CET 2010


Gracas Manuel:

Perdonad por mi desconocimiento.
Era eso. No estaba bien definida la variable LANG.
Ahora la he asignado a "es" ,he eliminado las asignaciones posteriores de
punto decimal y separador de miles y he dejado el agrupamiento a 3  y la
salida del programa me devuelve=


Localidad "es"
Punto Decimal =","		Separador miles="."
Agrupamiento  "" 	......

Con puntuación anterior: 102345,33

Agrupamiento="3"

Con puntuación nueva: 102345,33

(Debería de salir 102.345,33)

Aunque asigne al agrupamiento el valor 3, este no es recogido.
Parece que falte algo como actualizar dicho valor.

Gracias

Antonio Gómez

-----Mensaje original-----
De: Manuel L. [mailto:notret en gmx.es] 
Enviado el: martes, 14 de diciembre de 2010 16:59
Para: cconclase en listas.conclase.net
Asunto: Re: [C con Clase] Más de signos de puntuación


Hola, Jagse:

j> ...
j> Si al SO desde la Shell le envio la siguiente instrucción:  locale
j> Me devuelve :
j> LANG=spanish_spain.8859
j> LC_COLLATE= spanis_spain.8859
j> LC_TIME= spanis_spain.8859
j> LC_NUMERIC= spanis_spain.8859
j> LC_MONETARY= spanis_spain.8859
j> LC_MESSAGES= spanis_spain.8859
j> LC_ALL=
j> ...
j> Introduzco este programa en C:
j> ...
j>       printf("Localidad \"%s\"\n",setlocale(LC_ALL,""));
j> ...
j> Y las respuestas obtenidas son:
j> ...
j> Con Puntuación anterior: 102345.33
j> ...
j> Con Puntuación nueva: 102345.33
j> ...
j> ¿Dónde me equivoco?
j> ...

Supongo que los valores en las variables de entorno serán del tipo *spanish*
y no *spanis*. De todas formas creo que su problema está en la configuración
local. Cuando se invoca a la función setlocale con locale  = "" el
comportamiento no es estándar, por lo que no puedo saber cuál es su
problema, pero si usa glibc, lo cual sería de esperar, setlocale primero se
intenta deducir las preferencias de la variable LC_ALL. Si no estuviese
definida (no es su caso) leería las LC_* concretas y si no estuviesen
definidas LANG. Si alguna de las variables no estuviese bien definida la
llamada no tiene efectos. Ése sería su caso, ya que en su entorno LC_ALL=""
y "" no es una codificación conocida.

He probado su programa y funciona perfectamente con las variables de entorno
bien configuradas.

Fuente: página de manual de setlocale.

Atentamente, Manuel L.





Más información sobre la lista de distribución Cconclase