[英]How to print wchar_t variables in C
我正在調試我們公司寫的一些舊的C代碼。 function 是這樣的——
uint32
ExecuteCommand(wchar_t *dnsName, // IN
wchar_t *dnsUser, // IN
PNameValue *nameValues, // OUT
size_t *valuesSize) // OUT
{
....
為了調試這個,我需要檢查傳遞給這個 function 的 dnsUser 和 dnsName 的值。 我嘗試了以下選項 -
Util_Log(L"Printing the userName %S", dnsUser);
Util_Log(L"Printing the userName ", dnsUser);
Util_Log(L"Printing the userName %ls", dnsUser);
Util_Log(L"Printing the userName %lS",dnsUser);
Util_Log 是我們公司使用的專有日志記錄 API。 但是,以上都不起作用,並且用戶名在生成的日志中以某種亂碼形式打印出來。 我嘗試使用 printf 和 wprintf 但沒有在日志中打印任何內容-
printf("Printing the userName %S",userName);
wprintf("Printing the userName %lS %S", userName);
補充一下:下面是 SimCfg_Log API 的簽名。
void
Util_Log(const wchar_t *fmt, // IN
...) // IN
在方法中打印 wchar_t arguments 的正確方法是什么? 另外,知道為什么使用 printf 和 wprintf 不會在日志中打印任何內容嗎?
我的精神力量表明這就是你需要做的一切:
Util_Log(L"Printing the userName %s", dnsUser);
我的精神力量有兩個提示:
第一個提示是 Util_Log 的第一個參數是寬字符( L""
)字符串。 因此,格式說明符%s,
也將被解釋為寬字符字符串。
第二個提示是他只是你沒有提到已經嘗試過的格式說明符。 ;)
您不能使用內部 function 的格式選項並依賴swprintf :
#define SIZE 256
wchar_t buffer[SIZE];
swprintf(buffer, SIZE, L"Printing the userName %s",userName);
Util_Log(buffer);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.