gpt4 book ai didi

c - 为什么在 char 中存储 Unicode 字符有效?

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

我有一个程序可以从终端测试 I/O:

#include <stdio.h>
int main()
{
char *input[100];
scanf("%s", input);
printf("%s", input);
return 0;

}

它既可以处理 ASCII 字符,也可以处理 Unicode 字符和表情符号。

这是为什么?

最佳答案

您的代码之所以有效,是因为输入和输出流具有相同的编码,并且您没有对 c 做任何事情。

基本上,你输入一些东西,它被转换成一个字节序列,然后存储在 c 中,然后你将那个 bytes 序列发送回 stdout 将它们转换回可读字符。

只要编码和解码过程兼容,就会得到“预期”的结果。

现在,如果您尝试使用标准的“字符串”C 函数会怎样?假设您在终端中输入“♠Hello”,您将获得预期的输出,但是:

strlen(c) -> 8
c[0] -> Some strange character
c[3] -> H

你看到了吗?您可以在 char 数组中存储您想要的任何内容,但这并不意味着您应该这样做。如果要处理扩展字符集,请改用 wchar_t

关于c - 为什么在 char 中存储 Unicode 字符有效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34678035/

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