C 中的字符表示

char representation in C

我有一个 asciiname[]= "NUL[=24=]" " SP[=25=]" " P[=26=]" ......` 等的字符数组; 比我有以下代码

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 语句永远不会 returns 为真。显然这个说法有问题。无法绕过它。 asciiname 是一个 char 数组(每个元素 1 字节),但在我看来它仍然是一个字符串 "NUL[=11=]" 这怎么可能?在 if (c == asciiname[i]) 中评估了 asciiname[i] 的什么值? 非常感谢任何帮助!!!

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

更新:我明白了。感谢大家的关注和 swift 回复!!!这个网站太棒了!!!

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

例如,asciiname[0] 将计算为 "NUL[=14=]", asciiname[1] 将计算为 "SP[=15=]" 等等。