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=]"
等等。
我有一个 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=]"
等等。