以下程序无效。
#include <string.h>
#include <stdio.h>
int main()
{
const char *c = "abcdef";
// prints 'f' as expected
printf("%c\n", c[5]);
// comparison fails, does not print "yes"
if (c[5] == 'f')
printf("yes");
return 0;
}
如何将字符串文字中的字符与字符值进行比较?是否可以不使用ASCII相关函数,即chr()或ord()假设存在这些函数。 (我记得在Pascal时代使用过它们)
由于
答案 0 :(得分:6)
您的环境一定会有其他事情发生。我把它扔进了gcc,并按预期打印出“是”。
你确定你不只是错过了“是”因为默认情况下printf没有添加新行,所以它可能是“是[你的shell提示]”而你只是忽略了是吗?
答案 1 :(得分:4)
我没有看到代码有什么问题,除了:
puts("yes");
(或者如果您想使用printf()
,printf("yes\n");
)。string.h
。主要问题似乎是输出没有以换行符结束。
答案 2 :(得分:0)
当您尝试使用5
访问索引printf
处的字符并获取'f'
时。
现在你不是在任何地方修改字符串(你不能将它修改为字符串常量)
稍后您将索引5处的相同char与char常量'f'
进行比较。此测试应返回true
,并在输出中打印“是”。