gpt4 book ai didi

c - 在 C 中使用 printf() 打印出这个字符符号 ÿ (ASCII 152)

转载 作者:太空宇宙 更新时间:2023-11-04 06:10:32 25 4
gpt4 key购买 nike

我无法打印出这个特殊符号 ÿ (ASCII 152)。查看调试器,我可以看到变量正在保存特殊符号。目前它只打印一个空格。

我的简化代码看起来像这样

结构:

typedef struct BufferDescriptor {
char* cb_head;
}* pBuffer;

//Current object
pBuffer ptr_Buffer;

向 cb_head 添加符号的行:

//Calling addsymbol, the symbol used is EOF
addsymbol(ptr_Buffer, EOF);

Buffer* addsymbol(Buffer p, char symbol){
p->cb_head[add] = symbol;
}

我的 printf,我已经检查了变量 buffer 的值,它包含 ÿ 符号。但它只是打印出一个空格......是否有一些可能与机器相关的东西或我遗漏的关于 ASCII 的东西。

printf("%c",buffer);

最佳答案

如果相同的数字在不同的程序中显示不同,则可能是 character encoding问题。有很多很多不同的方法可以将数字 152 解释为一个字符。每个应用程序都可以使用不同的编码。听起来您的编辑器和您打印到的任何地方都在使用不同的编码。

没有ASCII 152。ASCII是7位的,只能到127。

有很多很多extended encodings of ASCII添加第 8 位以覆盖 128-255。它们对前 127 个字符共享相同的编码,after that they diverge . CP 437 和 CP 850 ÿ 为 152。Latin-1Windows-1252 ÿ 是 255。大多数现代东西使用 UTF-8ÿ 表示为两个字节,c3 bf

152 在 Latin-1 中没有任何意义,在 UTF-8 中也没有。

可能发生的情况是有些东西使用 UTF-8(152 无效),有些东西使用 CP 850(152 是 ÿ)。检查您的 IDE 的字符编码以及您用来显示的任何内容。

关于c - 在 C 中使用 printf() 打印出这个字符符号 ÿ (ASCII 152),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58121805/

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