У меня возникла проблема с моим кодом. Дело в том, что мне нужно сравнить два символа n
и a[p]
, но результат всегда отрицательный. Это небольшая программа викторины для моего задания. q[]
- это массив вопросов, и a[]
- это массив ответов. Игрок вводит t
или f
за true или false, но if
, похоже, не работает, поскольку он всегда печатает «Вы проигрываете!». (даже если условие верно).Сравнение символов в C, if-statement
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;
}
}
', если (п == а [P]) {' -> ', если (п == * а [р]) {' – BLUEPIXY
ты должен прислушаться предупреждения Твоих , –
** Примечание: ** 'fflush (stdin);' does ** Not ** удалить посторонние символы из 'stdin'. Вам нужно вручную удалить любые посторонние символы с чем-то похожим на 'int flush = 0; ', после чего/перед чтением из' stdin' во второй раз включайте 'do {flush = getchar(); } while (flush! = '\ n'); '. Это выполнит то, что вы ** не выполняете ** с 'fflush (stdin);'. –