Scanf-用户输入必须输入两次或两次以上

Scanf-用户输入必须输入两次或两次以上,c,scanf,C,Scanf,我已经编写了一个包含switch语句的C应用程序。当我尝试运行该应用程序时,它会提示输入选项,有时当我尝试输入一个选项时,系统没有响应,只是在两次或更多时间后,我被迫用enter输入相同的选项。 我的代码有问题吗? 我通过终端在我的开发板上执行应用程序。 请参见下面我的代码片段 包括TestApp.h int mainvoid{ BTON=ON;//将蓝牙状态保持为ON BTOFF=OFF;//将蓝牙状态保持为OFF int mainChoice,btChoice,zigChoice;//选择选

我已经编写了一个包含switch语句的C应用程序。当我尝试运行该应用程序时,它会提示输入选项,有时当我尝试输入一个选项时,系统没有响应,只是在两次或更多时间后,我被迫用enter输入相同的选项。 我的代码有问题吗? 我通过终端在我的开发板上执行应用程序。 请参见下面我的代码片段

包括TestApp.h int mainvoid{ BTON=ON;//将蓝牙状态保持为ON BTOFF=OFF;//将蓝牙状态保持为OFF int mainChoice,btChoice,zigChoice;//选择选项 char key,keyMain,c;//处理程序的连续性 int flag=0;//处理程序的连续性 btstatus=关闭; puts!!!测试应用程序!!!\n; 做{ printf\n主菜单:输入您的选择\n 1.蓝牙测试\n 2.Zigbee测试\n 3.亮度测试\n; 扫描%d,&mainChoice; 开关主选择{ 案例1: flag=1; 做{ 打印机输入您对蓝牙的选择:\n 1.打开蓝牙\n 2.打开可见性\n 3.设置密钥\n 4.扫描蓝牙设备\n 5.显示蓝牙配置\n 6.重置密钥\n 7.关闭可见性\n 8.关闭蓝牙\n; 扫描%d,&btChoice; 蓝牙测试选择; 做{ printf 是否要继续蓝牙测试?是/否\n; 而c=getchar!='\n'&&c!=EOF ; key=getchar; 如果键!='y'&键!='n'{ printfInvalid选项\n; } }while key!='y'&&key!='n'; }而key=='y'; 打破 案例2: flag=1; 做{ printfEnter您对Zigbee的选择:\n 1.要启用Zigbee模块\n 2.显示固件版本\n 3.显示网络信息\n 4.与PAN解除关联\n 5.建立PAN\n 6.扫描PAN\n 7.加入网络\n 8.扫描网络\n 9.广播消息\n; 扫描%d,&zigChoice; 齐格选择; 做{ 打印是否要继续zigbee测试?是/否\n; 而c=getchar!='\n'&&c!=EOF ; key=getchar; 如果键!='y'&键!='n'{ printfInvalid选项\n; } }while key!='y'&&key!='n'; }而key=='y'; 打破 案例3: flag=1; 做{ 亮度测试; 做{ printf 是否要继续亮度测试?是/否\n; 而c=getchar!='\n'&&c!=EOF ; key=getchar; 如果键!='y'&键!='n'{ printfInvalid选项\n; } }while key!='y'&&key!='n'; }而key=='y'; 打破 违约: printf\n无效的选择\n; 打破 } 做{ 打印是否要继续测试应用程序?是/n\n; 如果标志==1{ 而c=getchar!='\n'&&c!=EOF ; } keyMain=getchar; 如果keyMain!=“y”&&keyMain!=“n”{ printfInvalid选项\n; } }而keyMain!='y'&&keyMain!='n'; 如果keyMain=='n'{ 打破 } }而keyMain=='y'; 返回退出成功; } 无效蓝牙测试选项{ 开关选项{ 案例1: turnBluetoothBTON; 打破 案例2: 设置可视性; 打破 案例3: 设置密钥; 打破 案例4: 扫描设备; 打破 案例5: 显示配置; 打破 案例6: 重置密钥; 打破 案例7: 设置可视性关闭; 打破 案例8: 关掉蓝牙; 打破 违约: printf\n无效的选择\n; 打破 } } 无效测试选项{ 开关选项{ 案例1: printf\n Zigbee模块已启用!!!!\n; Zigbeenable; 打破 案例2: 显示固件外翻; 打破 案例3: 显示网络信息; 打破 案例4: 脱节氟丙烷; 打破 案例5: 编制计划; 打破 案例6: scanForPan; 打破 案例7: 联合网络; 打破 案例8: 扫描网络; 打破 案例9: 广播信息; 打破 违约: printf\n无效的选择\n; 打破 } } 空隙亮度试验{ 浮雕; 打印机亮度值从0到10:\n; 扫描%f,&brightval; 挫折与光明; }
我已经编写了一个java应用程序真的是java?什么输入不起作用?当它提示输入您的选择时,我添加了1。有时它会在第一种情况下执行功能。但有时我必须多次输入1。对不起,错了,它是c@DRD请发布复制问题的代码的缩短版本。您的问题是某个地方有一个额外的getchar。