努力结束比较字符串的循环

问题描述 投票:0回答:1

我正在尝试创建一个 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,它也会保持循环运行

c string scanf do-while strcmp
1个回答
0
投票

您永远不会在循环内更改

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);
© www.soinside.com 2019 - 2024. All rights reserved.