我有一段代码,它通过我认为是ASCII的前256个字符,输出字符,并在文本文件中输出该字符串的出现次数。令人好奇的是它输出的字符并不对应于任何在线ASCII表。第一个字符(i = 0)是空的,但第二个和第三个字符是笑脸,然后是心形,钻石,俱乐部和铁锹。更奇怪的是,当我检查字母表((char)65 =' A',...)时,一切正常并且对应于ASCII。为什么是这样?它只会在更标准的符号之前和之后混淆,说(char)254 =一个整数符号。这绝对不是ASCII ......
如果有任何安慰,我在windoes 8机器上通过Code :: Blocks运行这个程序。
我的代码:
void display ()
{
int i;
for(i=0; i<256; i++)
{
printf("Character: %c", (char)i);
printf("\tOccurrences: %d", characterCount[i]);
printf("\n");
}
}
答案 0 :(得分:5)
ASCII将128个初始值中的所有字符指定为不可打印的字符。一些基于ASCII的编码为这些字符分配图形表示。它们还为字符128及以上字符分配图形表示,这些字符甚至不是ASCII编码的一部分。例如,一个名为Page 437的常见PC编码为字符1和2分配笑脸,描述卡适合字符3到7的字符,依此类推。
您所描述的内容与第437页非常相似。但是,此行为与系统有很大关系。