繁体   English   中英

如何在C中将char字符串复制/转换为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;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM