如何在 C 中将一个 char 字符串 copy/convert 转换为 wchar_t 字符串?

How to copy/convert a char string to a wchar_t string in C?

我环顾四周,发现一个程序使用了 <wchar.h> 库中的 swprintf。不过这个方法我试过了,还是不行。它只是说 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;
}

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

在上面的代码中,在 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";

尝试使用 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;
}