[C con Clase] RV: Más de signos de puntuación
Antonio Gómez
jagse en intercomgi.com
Mar Dic 14 18:06:29 CET 2010
En el mensaje anterior existe un error en el código.
Donde pone printf("Con puntuaci¢n anterior: %10.2f\n\n",102345.3345);
Debe de ponr printf("Con puntuaci¢n anterior: %10.2lf\n\n",102345.3345);
Con esto quiero decir que he hecho pruebas como printf(“%lf\n”,1000.234)
Después de asignar los signos de puntuación y sigue saliendo 1000.234
Antonio
_____
De: Antonio Gómez [mailto:jagse en intercomgi.com]
Enviado el: martes, 14 de diciembre de 2010 14:58
Para: 'cconclase en listas.conclase.net'
Asunto: Más de signos de puntuación
Hola Steve:
He estado probando lo que me dijiste y también con los ejemplos de la web y
me pasa algo muy curioso, pero
que me está volviendo loco.
Si al SO desde la Shell le envio la siguiente instrucción: locale
Me devuelve :
LANG=spanish_spain.8859
LC_COLLATE= spanis_spain.8859
LC_TIME= spanis_spain.8859
LC_NUMERIC= spanis_spain.8859
LC_MONETARY= spanis_spain.8859
LC_MESSAGES= spanis_spain.8859
LC_ALL=
AL pedirle los signos de puntuación: locale –ck LC_NUMERIC
Me devuelve:
decimal_point=”,”
thousands_sep=”.”
grouping=””
Con lo cual el sistema local está correcto.
Introduzco este programa en C:
#include <stdio.h>
#include <locale.h>
#include <string.h>
main(int argc, char *_argv[]) {
struct lconv *lcPtr;
char *s;
printf("Localidad \"%s\"\n",setlocale(LC_ALL,""));
lcPtr=localeconv();
printf("Punto decimal =\"%s\"\t\t", lcPtr->decimal_point);
printf("Separador miles =\"%s\"\n", lcPtr->thousands_sep);
printf("Agrupamiento =\"%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("Agrupamiento mon =\"%s\"\t\t", lcPtr->mon_grouping);
printf("Signo Positivo =\"%s\"\n", lcPtr->positive_sign);
printf("Signo Negativo =\"%s\"\n", lcPtr->negative_sign);
printf("int_frac_digits = (char) %d\"\t", lcPtr->int_frac_digits);
printf("frac_digits = (char) %d\t", lcPtr->frac_digits);
printf("p_cs_precedes (char) %d\n", lcPtr->p_cs_precedes);
printf("p_sep_by_space (char) %d\t", lcPtr->p_sep_by_space);
printf("n_cs_precedes (char) %d\n", lcPtr->n_cs_precedes);
printf("n_sep_by_space (char) %d\t", lcPtr->n_sep_by_space);
printf("p_sign_posn (char) %d\n", lcPtr->p_sign_posn);
printf("n_sign_posn (char) %d\t", lcPtr->n_sign_posn);
printf("Con puntuaci¢n anterior: %10.2f\n\n",102345.3345);
lcPtr->decimal_point=",";
lcPtr->thousands_sep=".";
lcPtr->grouping="3";
printf("Punto decimal =\"%s\"\t\t", lcPtr->decimal_point);
printf("Separador miles =\"%s\"\n", lcPtr->thousands_sep);
printf("Agrupamiento =\"%s\"\n", lcPtr->grouping);
printf("Con puntuaci¢n nueva: %10.2f\n\n",102345.3345);
return(0);
}
Y las respuestas obtenidas son:
Localidad “C”
Punto decimal = “.” Separador de miles =””
Agrupamiento = “” ……..
Con Puntuación anterior: 102345.33
Punto decimal =”,” Separador miles =”.”
Agrupamiento =”3”
Con Puntuación nueva: 102345.33
¿Dónde me equivoco?
Gracias
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20101214/f4b20fb5/attachment.html>
Más información sobre la lista de distribución Cconclase