c - 尝试连续提示直到他们提供仅整数输入时出现意外结果
问题描述
问题:当用户输入“q”时,提示(数字:)将再次出现(这是预期的)。但是,当用户输入“q q”时,提示会出现两次,即(数字:数字:)。而当用户输入“qq q”时,会出现3次提示,即(Number: Number: Number: )。无论如何要修复此代码?我是编程新手,所以如果您尝试用外行术语解释问题,我将不胜感激。
int main(void)
{
char number[17];
while (true)
{
printf("Number: ");
scanf("%s", number);
int i;
char c;
if (sscanf(number, "%i %c", &i, &c) == 1)
{
printf("%i\n", i);
return 0;
}
}
}
解决方案
我已经根据你们所说的编辑了代码并且它有效。有人可以向我解释为什么会这样吗?
int main(void)
{
char number[17];
while (true)
{
printf("Number: ");
fgets(number, 17, stdin);
int i;
char c;
if (sscanf(number, "%i %c", &i, &c) == 1)
{
printf("%i\n", i);
return 0;
}
}
}
推荐阅读
- python - 为什么比特币椭圆曲线上的这个特殊点看起来不属于那个椭圆曲线?
- linux - 从文件列中读取 x,y,转换为 r, θ 并保存在同一文件的不同列中
- c# - 发生异常时如何获取 IL 指令偏移量?
- r - 如何获取R中二维表中元素的两个轴的名称
- android - 如何通过不同的资源获取引用资源的 ID?
- json - PowerShell - JSON 格式查询 - “收到无效的 JSON 有效负载”
- node.js - Firebase 根据所选项目动态初始化应用程序
- r - 使用 R 循环并创建列表
- java - Android YouTube 播放器 API
- java - androidx.gridlayout.widget.GridLayout 无法转换为 android.widget.GridLayout