Ваш цикл while
не может быть завершен, потому что if (yes)
и if(no)
всегда true
.
yes
равно Messi
.Все ненулевые значения обозначаются как true
.Таким образом, ваше значение yes
всегда имеет адрес памяти, в котором сохраняется Messi
.и он всегда ненулевой.
no
тоже одно и то же.no
всегда указывает на Beckham
.Итак, это true
Итак, я изменил код для вашей логики.Пожалуйста, используйте следующий код:
#include <string.h>
#include <iostream>
#include <stdio.h>
int random(char z[]);
int main() {
char x[] = "Do they have hair";
char again[] = "run again";
char yes[] = "Messi";
char no[] = "Beckham";
char u[] = "Nope";
do {
if (random(x)) {
if (random(yes)) printf("True!\n");
else printf("Nothing!\n");
}
else {
if (random(no)) printf("True!\n");
else printf("Nothing!\n");
}
} while (random(again));
return 0;
}
int random(char z[])
{
char a[3];
printf("%s?:", z);
fgets(a, 3, stdin);
return a[0] == 'y';
}