gpt4 book ai didi

c - 如何打印 (void *) 字符串中的单词

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

我正在尝试使用将文本(印地语或任何其他非英语语言)读入数据结构的程序。指向此文本的部分是一个 void * 指针。我如何使用 fprintf 打印此文本的子字符串?

编辑:

/* some text manipulation stuff. */
wchar_t *origString = L"इसरो ने लॉन्च किया पहला 'मेड इन इंडिया' स्पेस शटल, PM बोले- ये असाधारण और प्रेरणादायक काम";
void *pText = (void *)origString;
wchar_t *newString = (wchar_t*)pText;
fprintf(stdout, "Old String: %ls\n", origString);
fprintf(stdout, "New string: %ls\n", newString);

在输出中,我只看到特殊的、不可打印的字符(不是我期望的 UTF-8 编码)。

编辑:
我正在使用一些第三方代码来读取文本(非英语语言)并进一步处理它。我还需要在控制台上显示此文本。
以下是第三方代码的作用:
1.获取文件的大小。
2. 读入(通过fread)整个文本并使用void *指向这个blob。
3. 我想弄清楚如何操作此文本 - 我什至如何让它打印出来?

最佳答案

除了在基于 UTF-8 的语言环境中,任意宽的字符字符串都不能转换为您可以输出的内容。在程序启动时,初始语言环境是“C”。您必须调用 setlocale(LC_CTYPE,"") 来激活字符编码的默认区域设置,在现代系统上,它应该是基于 UTF-8 的。 (正如我最初所说,您也可以使用 setlocale(LC_ALL,"") 来激活所有区域设置类别,而不仅仅是字符编码,但这会产生很多您可能不希望的后果,比如可能会破坏所有使用小数点的函数。)

void * 并且强制转换与您的问题无关。指针类型之间的转换不会转换它们指向的数据。

关于c - 如何打印 (void *) 字符串中的单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37383155/

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