簡體   English   中英

如何在 C 中打印 wchar_t 變量

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM