[英]“sprintf” error in esp-idf. gcc version 9.1.0 in msys2
[英][msys2][gcc] Wrong output of wprintf() compiling with MSys2's gcc 10.2
我需要使用 MSys2 的 gcc 工具鏈讓這個精簡的 C 程序在 Windows 7 上運行:
#include <stdio.h>
void wmain(int argc, wchar_t *argv[])
{
for (int i = 1; i < argc; i++)
wprintf(L"%s\n", argv[i]);
}
代碼編譯為
gcc -Wall -municode -O2 -march=x86-64 -m64 test.c
但給了我以下 output
>> ./a.exe kk лл
k (!)
:?:?
我有以下問題:
編輯 [1]:同時我設法使用 gcc 9.3 設置了一個新的 MSys2 環境。 “錯誤”仍然存在,所以它不是編譯器。
編輯[2]:“一些程序員老兄”(cmp. 下面)描述了“立即”解決方案(THX。)。
即使對於寬字符wprintf
,格式%s
也適用於窄字符串。
您需要使用%ls
打印寬字符串:
wprintf(L"%ls\n", argv[i]);
然而,這可能仍然不夠,因為輸入(包括參數)的實際編碼可能不是預期的。 您需要考慮程序運行的終端使用的編碼。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.