Ejercicio basico con c++ (Ayuda con el prinft)

Iniciado por El_newbie2017, 27 Mayo 2017, 07:54 AM

0 Miembros y 1 Visitante están viendo este tema.

El_newbie2017

No >:D >:D >:D >:D MAFUS.

No quiere colocar los millares en el int. No si se le falte algo de mas al código.


Probandolo con otro código me tiera un valor null, no me tira la localidad de Colombia.

[Codigo]

#include <locale.h>
#include <stdio.h>
#include <time.h>

using namesapce std;

int main ()
{
   time_t currtime;
   struct tm *timer;
   char buffer[80];

   time( &currtime );
   timer = localtime( &currtime );

   printf("Locale is: %s\n", setlocale(LC_ALL, "es_CO"));
   strftime(buffer,80,"%c", timer );
   printf("Date is: %s\n", buffer);

 
   printf("Locale is: %s\n", setlocale(LC_ALL, "es_CO"));
   strftime(buffer,80,"%c", timer );
   printf("Date is: %s\n", buffer);

   return(0);
}

No se que pueda hacer.   :-\

MAFUS

Partiendo de tu último programa he hecho que me escriba el valor devuelto por una cadena vacía ("") y me ha devuelto el valor "es_ES.UTF-8". Es así porque este es el locale de mi sistema. De seguro que si tienes bien configurado tu S.O. te devolverá el de Colombia. De todas formas lo he buscado y es "es_CO.UTF-8". Inténtalo, a lo mejor los sistemas ahora están basados en UTF8. O dale la cadena vacía.

Sobre lo que me has dicho de que no quieres darle separador de millares al int, no lo entiendo pues eso es lo que te pide el ejercicio.

El_newbie2017

Si MAFUS me sirvio con "" extraño no había querido.Pero aun no me dan los millares.


No, me entendiste mal, dije que no ha separado el numero int en millares todavia, por eso probe con otro programa si el lc_numeric funcionaba y siempre me de volvia un valor null.

El codigo esta igual que antes pero con un es_CO.UTF-8 dentro de las comillas.

Griacias!!! Por su atención eres Grande.

MAFUS

Extraño que no te dé los millares. A mi con este código
#include <locale.h>
#include <stdio.h>

int main ()
{
   printf("Locale is: %s\n", setlocale(LC_ALL, "es_CO.UTF-8"));
   printf("Número: %'d\n", 12345678);
}


Me da la siguiente salida:
CitarLocale is: es_CO.UTF-8
Número: 12.345.678

El_newbie2017

Mmmmmm es muy estraño compile el codigo que me das arriba y no me lee el apostrofe.

me sale en pantalla;

[Codigo]

Local is: <null>
numero: 'd


MAFUS

#15
Vale, lo entiendo. Debes estar trabajando con Windows, por eso no tienes la codificación es_CO.UTF-8 ni el apostrofe como bandera para printf, ya que este es parte del estándar POSIX, que Windows no usa. Si ese es el caso tienes dos posibilidades:
Usar un compilador que trabaje con POSIX
o
Formatear la cadena a mano.

El_newbie2017

Hola MAFUS;
Tu que elección me recomiendas y si pudieras facilitarme un manual o algo confiable. Lo siento la tardanza. Gracias de antemano.