printf a wchar_t?
    Luc Rooijakkers 
    lwj at cs.kun.nl
       
    Tue Jan 29 21:24:22 AEST 1991
    
    
  
In <1991Jan25.014927.24195 at contact.uucp> egr at contact.uucp (Gordan Palameta) writes:
>Can you print a wchar_t using printf and some sort of % format?
>Is this a reasonable thing to want to do at all?
>K&R II and H&S seem to say nothing about this...
My interpretation of the standard says: no. While it would have been
easy for the committee to include a %lc and a %ls format for printf, they
have not done this. This would not impose any significant overheads for
implementations that have MB_LEN_MAX==1 (see my companion article about
multibyte characters in printf/scanf formats). 
You can use the following function, though:
#include <stdio.h>
#include <stdlib.h>
#include <limits.h>
char *wc2mb(wchar_t wch)
{
	static char mbch[MB_LEN_MAX+1];
	int mbchlen;
	/* reset to initial shift state */
	wctomb ( (char *)NULL, L'\0' );
	/* convert wch to multibyte character */
	mbchlen = wctomb(mbch,wch);
	/* if not a valid multibyte character, return empty string */
	if ( mbchlen < 0 )
		return "";
	/* append null character */
	mbch[mbchlen] = '\0';
	/* return the multibyte character */
	return mbch;
}
and then use wc2mb(wch) with a %s format specifier.
--
Luc Rooijakkers                                 Internet: lwj at cs.kun.nl
Faculty of Mathematics and Computer Science     UUCP: uunet!cs.kun.nl!lwj
University of Nijmegen, the Netherlands         tel. +3180652271
    
    
More information about the Comp.std.c
mailing list