c - 为什么 printf( "%c", 1) 返回笑脸而不是 1 的编码字符

标签 c terminal character-encoding printf character

这是我的代码

#include <stdio.h>

int x,y;

int main( void )
{
    for ( x = 0; x < 10; x++, printf( "\n" ) )
        for ( y = 0; y < 10; y++ )
            printf( "%c", 1 );

    return 0;
}

它返回笑脸。我到处搜索笑脸代码或 1 代码,但我没有设法找到任何链接或任何解释,为什么 1 的 char 值返回笑脸,而 1 的 ascii 代码是 SOH。我研究了这个问题的答案,但没有找到任何答案来解释为什么会发生这种情况。

最佳答案

不同终端的输出不同。例如,在我的 OS X 默认终端上,没有字符输出。

在您的情况下, 可能是由于 some historical reasons 输出的.简而言之,这是因为将字节0x01映射到U+263A的代码页437是MS-DOS的字符集。

关于c - 为什么 printf( "%c", 1) 返回笑脸而不是 1 的编码字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37455047/

相关文章:

macos - 如何使用 g++ 在 Mac 上使用 freeglut 库编译程序

c - 在 C 程序中可能是 "force"UTF-8 吗?

c - 当您在 C 中将 char * 地址转换为 int * 时,如果地址不是字对齐的,会发生什么情况?

c - C 中的变量指针

macos - 无需密码即可通过网络设置连接到首选(已保存)网络

ios - 使用 NSASCIIStringEncoding 对 NSString 进行编码

windows - 有没有工具可以在 Windows 上将 UTF-8 文件名批量转换回 ISO-8859-1?

c - 在多线程环境中遵循指针

c - 我如何从 C 中的 stdio 获取一个 int?

linux - 如何在 ubuntu 中记录终端击键