我有一个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数组的内部表示的逻辑....我一直在读很多,没有任何运气。请解释
更新:我弄明白了。感谢大家的关注和快速反应!这个网站摇滚!!!
答案 0 :(得分:1)
getchar()
将char转换为int。如果您的值为c,那么您应该只能通过说asciiname
来引用asciiname[c]
。您不需要使用for循环,因为您拥有所需的索引。
例如,asciiname[0]
将评估为"NUL\0", asciiname[1]
评估为"SP\0"
,依此类推。