printf a locale

Karel Zak zakkr na zf.jcu.cz
Čtvrtek Prosinec 7 18:11:22 CET 2000


On Thu, 7 Dec 2000, Michal Fikera wrote:

> David Kuzela <xkuzd01 na vse.cz> wrote:
> : Michal Fikera pise:
> :> Dobry den,
> :> nevite nekdo jak prinutit printf, aby tisknul desetina cisla
> :> s teckou at je LC_* nastaveno jakkoli? Dival jsem se do zdrojaku
> :> libc a zadny figl jsem nenasel. Jedine co me funguje, je:
> 
> :        #include <locale.h>
> :        struct lconv *localeconv(void);
> 
> Tohle je sice pekne, ale ja nepotrebuju vedet co to bude tisknout
> normalne, ale ja potrebuju aby to tisklo .(tecku) vzdycky, at je LC_*
> nastaveno na co chce. Kdyz zmenim neco v te strukture co vrati
> localeconv, tak to samozrejme spadne na Segmentation fault.

 char	*lc_num;

 /* store current locale setting 
  */
 lc_num = setlocale(LC_NUMERIC, NULL);
 
 /* Set locale for "."
  */
 setlocale(LC_NUMERIC, "C")

 printf("%f", 1.234);

 /* Set previous original locale
  */ 
 setlocale(LC_NUMERIC, lc_num);

 ... pochopitelne, ze to nebude nijak rychle, ale je to 100% funkcni a
doufam, ze je to co chcete - jinak "man setlocale"

			Karel





Další informace o konferenci Linux