我有一个asciiname [] =“ NUL \ 0”“ SP \ 0”“ P \ 0” .......`的char数组,依此类推;
比我有以下代码

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])值?任何帮助都非常感谢!!!

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

更新:我知道了。感谢大家的关注和迅速的回复!!!这个网站摇滚!

最佳答案

getchar()将字符转换为整数。如果您具有c的值,那么您只需说出asciiname就应该能够引用asciiname[c]。您不需要使用for循环,因为您恰好具有所需的索引。

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

10-06 05:54