[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