isprint() vs diakriticka znamenka

Honza Pazdziora adelton na informatics.muni.cz
Neděle Září 13 11:25:11 CEST 1998


> 
> if(isprint(*p)) 
> 	/*char se nezmeni a zapise se do vystupu*/
> else {
> 	sprintf (escape_buffer, "\\x%02x", *p);
> 	/* do vystupu se zapise escape_buffer */
> }
> ----------------
> 
> Mozna oprava:
> ----------------
> if((unsigned char) *p >= ' ')
> 	/*char se nezmeni a zapise se do vystupu*/
> else
> 	sprintf (escape_buffer, "\\x%02x",(unsigned char) *p);
> 	/* do vystupu se zapise escape_buffer */
> }
> ----------------
> 
> Tato oprava funguje spravne, ale nejsem si tak uplne jisty tim, ze bude
> chodit napr. v japonske lokalizaci, nebo na jinych OS ... Neda se nejak
> vycucnout z locales to, ktere znaky jsou printable?

Ale pokud mate pro spusteni toho programu locales nastavene
a vyexportovane (alespon LC_CTYPE), tak by ten isprint mel fungovat
jaksi sam od sebe, ne? Prave od toho locales jsou, ze nedelate hard
code isprint hodnot, ale ze se ziskaji dynamicky az pri behu
programu.

------------------------------------------------------------------------
 Honza Pazdziora | adelton na fi.muni.cz | http://www.fi.muni.cz/~adelton/
                   I can take or leave it if I please
------------------------------------------------------------------------


Další informace o konferenci Linux