C中的char表示

时间:2015-06-08 16:46:19

标签: c arrays char

我有一个asciiname的字符数组[] =“NUL \ 0”“SP \ 0”“P \ 0”.......`等等; 比我有以下代码

while ((c = getchar()) !=EOF){
    for (i=0; i<128; ++i) {
        if (c == asciiname[i])
            printf("The code %3x represents %s\n", i, &asciiname[4*i]);
    }
}

if语句永远不会返回true。显然这个陈述有问题。无法绕过它。 asciiname是一个char数组(每个元素只有1个),但它仍然需要我看作字符串"NUL\0"这是怎么可能的?在asciiname[i]中评估if (c == asciiname[i])的值是多少? 非常感谢任何帮助!!!

更新:::只有一个字符asciname [] ...抱歉输入错误。我的目标是仅使用stdio库创建可见打字机。基本上我已经给了一个文件,我必须阅读它,每行生成一个char输出。计划是从输入中获取char,在asciiname数组中找到它并将其打印出来。代码是我必须遵循的格式。问题是我的if语句永远不会返回true。我不明白char数组的内部表示的逻辑....我一直在读很多,没有任何运气。请解释

更新:我弄明白了。感谢大家的关注和快速反应!这个网站摇滚!!!

1 个答案:

答案 0 :(得分:1)

getchar()将char转换为int。如果您的值为c,那么您应该只能通过说asciiname来引用asciiname[c]。您不需要使用for循环,因为您拥有所需的索引。

例如,asciiname[0]将评估为"NUL\0", asciiname[1]评估为"SP\0",依此类推。