如何在 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;
}
我环顾四周,发现一个程序使用了 <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;
}