我正在尝试创建一个 C 程序,将一个字符串输入与 3 个有效字符串进行比较,如果输入与任何字符串都不相同,那么它将重新循环。但是,即使用户输入有效,我也无法关闭循环
char HB[3] = "HB";
char FB[3] = "FB";
char BB[3] = "BB";
int x = strcmp(boardType, FB);
int y = strcmp(boardType, BB);
int z = strcmp(boardType, HB);
do {
fflush(stdin);
printf("Which board type would you like? Full Board(FB), Half Board(HB) or Bed & Breakfast(BB)\n");
scanf("%s", &boardType);
printf("%s", boardType);
} while (x != 0 || y != 0 || z != 0);
即使输入 HB、BB 或 FB,它也会保持循环运行
您永远不会在循环内更改
x
、y
和 z
的值,从未对从用户读取的新值进行比较。
尝试将
strcmp
移动到循环内(我假设 boardType
已在顶部某处声明,为了简洁起见,您省略了它)
char HB[3] = "HB";
char FB[3] = "FB";
char BB[3] = "BB";
int x = 1;
int y = 1;
int z = 1;
do {
fflush(stdin);
printf("Which board type would you like? Full Board(FB), Half Board(HB) or Bed & Breakfast(BB)\n");
scanf("%s", &boardType);
printf("%s", boardType);
x = strcmp(boardType, FB);
y = strcmp(boardType, BB);
z = strcmp(boardType, HB);
} while (x != 0 || y != 0 || z != 0);