如何在C中将char字符串复制/转换为wchar_t字符串?

时间:2015-04-25 10:02:52

标签: c string char wchar-t

我环顾四周,找到了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;
}

这段代码有问题还是我的编译器?

2 个答案:

答案 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;
}