我环顾四周,找到了swprintf
库中使用<wchar.h>
的程序。但是,我尝试了这种方法,但它没有用。它只是说当我运行程序时program.exe已经停止工作。我将我找到的示例程序复制到我自己的编译器中 - 这也没用。我将复制以下程序:
#include <stdio.h>
#include <wchar.h>
int main(void)
{
wchar_t NameBuffer[100];
char *str1 ="c:\\Program Files\\test.txt";
swprintf(NameBuffer,100,L"%s",str1);
printf("%s\n",NameBuffer);
return 0;
}
这段代码有问题还是我的编译器?
答案 0 :(得分:0)
在上面的代码中,在printf行
中printf("%s\n",NameBuffer);
NameBuffer
不是char *
类型的(已转换)值,因此您通过不匹配%s
及其相应的参数来调用未定义的行为。
尝试
wprintf(L"%ls\n", NameBuffer);
或
printf("%ls\n", NameBuffer);
您可能还希望将str1
定义为const
const char *str1 = "c:\\Program Files\\test.txt";
答案 1 :(得分:0)
尝试使用mbstowcs()进行转换:
#include <stdio.h>
#include <wchar.h>
#include <stdlib.h>
int main(void)
{
wchar_t NameBuffer[100];
char *str1 ="c:\\Program Files\\test.txt";
mbstowcs(NameBuffer, str1, 100);
wprintf(L"%ls\n",NameBuffer);
return 0;
}