我的代码遇到了这个问题。问题是我需要比较两个字符n
和a[p]
,但结果总是否定的。这是我的作业的一个小测验计划。 q[]
是一系列问题,a[]
是一系列答案。播放器输入t
或f
表示真或假,但if
似乎无法正常工作,因为它始终打印“你输了!”#39; (即使条件为真)。
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;
}
}
答案 0 :(得分:3)
看起来您将a
分配为字符指针数组(即c字符串数组)而不是字符数组:
const char *a[100];
尝试分配一个字符数组而不是一个字符指针数组,并将您的值初始化为字符而不是c字符串:
const char *a[100];
变为char a[100];
- 请勿忘记删除const
,因为您稍后会将值写入数组。
a[0] = "f";
变为a[0] = 'f';
答案 1 :(得分:1)
你的测试是错误的。您目前正在针对char
...
char *
进行测试
两种纠正方法:
char *
的字符数组。 char a[100];
然后使用a[0]='f';
if (n==a[p][0])
,以便针对第p个字符串的第一个字符测试n