gpt4 book ai didi

在 C 中连接 wchar_t Unicode 字符串?

转载 作者:太空宇宙 更新时间:2023-11-04 05:46:41 24 4
gpt4 key购买 nike

我是初学者,我玩的是 winapi - C 的 FindFirstFileW()。unicoded 路径是:“\\?\c:\Français\",我想将“*”连接到 wchar_t 类型的路径(然后我将把它用作 FindFirstFileW() 的参数)。

我做了两个测试用例,第一个是 ansi_string() 似乎工作正常,第二个是 unicode_string() - 我不太明白我应该如何将额外的“*”字符连接到 unicoded小路。我将字符串写入文件,因为我无法将 Unicoded 字符打印到标准输出。

注意:我的目标是学习,这意味着我将感谢有关我的场景的指导和对适当资源的引用,我是一个初学者,这是我第一次尝试使用 Unicode。

谢谢,Doori 酒吧

#include <stdio.h>
#include <stdlib.h>
#include <wchar.h>
#include <string.h>
#include <errno.h>

void *error_malloc(int size);

void ansi_string(char **str1, char **str2);

void unicode_string(wchar_t **wstr1, wchar_t **wstr2);

void unicode_string(wchar_t **wstr1, wchar_t **wstr2)
{
/* assign wstr1 with the path: \\?\c:\Français\ */
*wstr1 = error_malloc((wcslen(L"\\\\?\\c:\\Français\\")+1) *sizeof(**wstr1));
wcscpy(*wstr1,L"\\\\?\\c:\\Français\\");

/* concat wstr1+"*" , assign wstr2 with: \\?\c:\Français\* */
*wstr2 = error_malloc((wcslen(*wstr1) + 1 + 1) * sizeof(**wstr1));
/* swprintf(*wstr2,"%ls*",*wstr1); */
/* how should I concat wstr1+"*"? */
wcscpy(*wstr2,L"\\\\?\\c:\\Français\\");
}

void ansi_string(char **str1, char **str2)
{
/* assign str1 with the path: c:\English\ */
*str1 = error_malloc(strlen("c:\\English\\") + 1);
strcpy(*str1,"c:\\English\\");

/* concat str1+"*" , assign str2 with: c:\English\* */
*str2 = error_malloc(strlen(*str1) + 1 + 1);
sprintf(*str2,"%s*",*str1);
}

void *error_malloc(int size)
{
void *ptr;
int errornumber;
if ((ptr = malloc(size)) == NULL) {
errornumber = errno;
fprintf(stderr,"Error: malloc(): %d; Error Message: %s;\n",
errornumber,strerror(errornumber));
exit(1);
}
return ptr;
}

int main(void)
{
FILE *outfile;
char *str1;
char *str2;
wchar_t *wstr1;
wchar_t *wstr2;

if ((outfile = fopen("out.bin","w")) == NULL) {
printf("Error: fopen failed.");
return 1;
}

ansi_string(&str1,&str2);
fwrite(str2, sizeof(*str2), strlen(str2), outfile);
printf("strlen: %d\n",strlen(str2));
printf("sizeof: %d\n",sizeof(*str2));
free(str1);
free(str2);

unicode_string(&wstr1,&wstr2);
fwrite(wstr2, sizeof(*wstr2), wcslen(wstr2), outfile);
printf("wcslen: %d\n",wcslen(wstr2));
printf("sizeof: %d\n",sizeof(*wstr2));
free(wstr1);
free(wstr2);

fclose(outfile);
return 0;
}

最佳答案

有什么问题:

wchar_t *wcscat(wchar_t *dest, const wchar_t *src);

?

这应该可以解决问题吗?

关于在 C 中连接 wchar_t Unicode 字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2769789/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com