[英]Char comparison in C, if-statement
我的代码遇到这个问题。 问题是我需要比较两个字符n
和a[p]
但结果始终是负数。 这是我分配的一个小测验程序。 q[]
是一个问题数组,而a[]
是一个答案数组。 玩家输入t
或f
表示是非,但if
似乎不起作用,因为它始终显示“ You输!”。 (即使条件为真)。
char questions(){
const char *q [100];
q[0]= "Centipedes always have 100 feet."; //f
q[1] = "Marie Curie’s husband was called Pierre."; //t
[...]
q[99] = "";
const char *a[100];
a[0] = "f";
a[1] = "t";
[...]
a[99] = "";
char n;
int p, i;
for (i = 0; i<=7; ++i)
{
srand(time(NULL));
p = (rand() % 18);
printf("\n");
printf(q[p]);
printf("\n");
fflush(stdin);
scanf("%c", &n);
if (n == a[p]){
printf("Correct answer!\n");
}
else
{
printf("You lose!");
break;
}
}
看起来您分配a
作为字符指针数组(即c字符串数组)而不是字符数组:
const char *a[100];
尝试分配一个字符数组而不是一个字符指针数组,并将值初始化为字符而不是c字符串:
const char *a[100];
成为char a[100];
-不要忘记删除const
因为稍后您将值写入数组。
a[0] = "f";
变成a[0] = 'f';
您的测试是错误的。 您目前正在测试char
对char *
...
两种纠正方法:
char *
。 char a[100];
然后用a[0]='f';
初始化它们a[0]='f';
if (n==a[p][0])
以便针对第p个字符串的第一个字符测试n
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.