我使用 fgets() 获取用户输入,然后使用 sscanf() 将其解析为双精度。这是我的示例代码:
int menuItem = 0;
char input[3];
printf("Enter valid menu item"); //values are 1, 2, 3, 4, 5, and -1
fgets(input, sizeof input, stdin);
sscanf(input, "%d", &menuItem);
如果用户输入 3 位数字(无效输入,我想相应地处理它),则会发生错误,它会通过自动将第三位数字作为下一个输入来跳过我的下一个 fgets()。例如,如果用户 inters 123,它现在将跳过下一个 fgets 并使用值 3 作为输入。我怎样才能清除这个,或者最多只能读取 1 位数字(但仍然能够处理 -1)。