编译后未显示%c和其他符号(例如“°​​”)

时间:2014-04-12 10:16:06

标签: c ascii

我刚刚开始学习C,然后想继续学习C ++。我目前正在使用教科书,只是编写示例,以便更熟悉编程语言和过程。

由于书中给出的例子不起作用,我试图找到其他类似的代码。问题是在编译代码之后,程序本身不显示%c表示的符号。我得到了数字33-126的符号,但其他一切都没有任何东西或只是一个白色块...

另外,在之前的一些例子中,我想为温度写°C,它无法显示符号°

我在网络上找到的不显示%c符号的示例是

#include <stdio.h>
#include <ctype.h>

int main()
{
    int i;
    i=0;
    do
    {
        printf("%i %c \n",i,i);
        i++;
    }
    while(i<=255);
}

有人熟悉这个吗?为什么我无法获得%c的输出或°以及???

2 个答案:

答案 0 :(得分:0)

33-126范围之外的任何内容都不是可见的ASCII字符。 0-32就像退格键(8),&#34;设备控制2&#34; (18)和空间(32)。 127是DEL,任何过去的东西都不是ASCII;谁知道你的终端将如何处理它。

答案 1 :(得分:0)

128到255之间的代码点是扩展ASCII ,这取决于字符集。

美国英语Windows默认使用ANSI(Windows-1252),在代码点°使用字符0xB0。其他操作系统/语言可能使用不同的字符集,这些字符集对°或可能没有°符号具有不同的代码点。

您有以下解决方案:

  • 在计算机正在使用的字符集中查找°的值并正常打印
  • 将字符集更改为Windows-1252 / ISO 8859-1并打印'°''\xB0'
  • 打印Unicode。这是推荐的方法。在Windows它有点棘手,但并非不可能。在Linux / Unix上只输出正确的UTF-8字符串,你不需要关心任何事情。