c - C 中的问题 - scanf() 跳过输入(缓冲区没有问题)
问题描述
基本上,我必须使用菜单(我在第一年)进行货币价格转换,但是当您选择 0 时执行的第二个 scanf 被完全跳过;之后程序再次打印菜单大约 5 次,然后它让您再次选择一个选项。这是唯一不工作的部分,其余的都很好。
您可能认为问题在于缓冲区存储了前一个 scanf 中的换行符,但事实并非如此,因为我要确保清理它。另外,不要介意字符串,它们只是西班牙语。
谢谢你的时间!
'''
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
int main(void) {
char e = ' ';
float le = 1.1, de = 0.9, din = 1, c1, c2;
while (e != 's') {
puts("\n ================================================================");
puts(" CONVERSION DE DIVISAS");
puts(" ================================================================");
puts("0) Introducir valores de cotizacion de monedas");
puts("a) Convertir euros a dolares y libras");
puts("b) Convertir dolares a euros y libras");
puts("c) Convertir libras a euros y dolares");
puts("s) Salir");
printf("\nIntroduzca su eleccion: ");
scanf(" %c", &e);
e = tolower(e);
fflush(stdin);
switch (e) {
case '0':
printf("\nIntroduzca cuantas libras son un euro: ");
scanf(" %9.4f ", &le);
fflush(stdin);
printf("Introduzca cuantos dolares son un euro: ");
scanf(" %9.4f ", &de);
fflush(stdin);
break;
default:
printf("\nOpcion incorrecta");
break;
}
}
return 0;
}
'''
解决方案
推荐阅读
- javascript - 反应全局计数器变量更新脱离上下文
- bash - 如何删除名称附加到其父文件夹名称末尾的子目录
- c++ - C++ 中没有名为“元组”的模板
- javascript - 在 lodash 链接“_.chain()”中返回父对象
- javascript - addEventListener 仅对直接子级
- bootstrap-5 - Bootstraps 5.0 汉堡菜单
- bootstrap-4 - 如果浏览器自动下载内容,则不显示 PDF
- c# - 尝试将 base64String 转换为 IFormFile 会在 C# 中引发 SystemInvalidOperation 异常
- keycloak - 通过 Keycloak 使用远程 IdP 进行第二次登录失败,“用户名或密码无效”
- sql-server - 如何使用 ODBC 连接从 sql server 运行 SSIS 包?