1
我想實現我自己的printf
,我有一個問題處理寬字符%S
。va_arg在C中有寬字符,如何處理%S
void my_printf(char *format, ...)
{
char *traverse;
va_list arg;
va_start(arg, format);
traverse = format;
while (*traverse)
{
if (*traverse == '%')
{
*traverse++;
if (*traverse == 'S')
printf("%S\n", va_arg(arg, wchar_t));
*traverse++;
}
else
putchar(*traverse++);
}
va_end(arg);
}
警告:格式指定類型 'wchar_t的*'(又名 'INT *'),但該參數的類型爲 'wchar_t的'(又名 'INT')[-Wformat] 的printf(「%S \ n「,va_arg(arg,wchar_t));
當我使用下面的代碼printf
工作正常。
printf("%S\n", L"Some String");