c - 如何停止通过输入插入值?
问题描述
如果用户必须插入多个值然后他们想停止我该怎么办?
例如,用户必须插入浮点值,但如果他们插入一个字母,则循环停止。我怎样才能创建这样的东西:
for(;;){
scanf("%f", &n);
if(!isdigit(n))
break;
}
解决方案
scanf
是交互式用户输入的糟糕选择。特别是因为如果用户键入了一些scanf
不期望的内容,则该输入将保留在内部输入缓冲区中,并且很可能会在scanf
程序的后续部分中引起麻烦。
我会去做这样的事情:
#include <stdio.h>
int main(int argc, char * argv[])
{
float n;
char input[100];
for (;;) {
fgets(input, sizeof(input), stdin);
if (sscanf(input, "%f", &n) != 1)
break;
printf("User input = %f\n", n);
}
printf("Last line entered by user: %s", input);
}
推荐阅读
- java - 优化 n^2 循环内的合并查询
- node.js - 删除bulmq中特定的可重复作业(使用jobid)
- git - 完成发布时我应该写什么作为标签消息?
- python - python:添加带有类装饰器参数的方法导致TypeError:add_bar()缺少1个必需的位置参数:'cls'
- ruby-on-rails - Rake aborted:加载错误,无法加载此类文件
- python - ImportError:重定位错误:R_AMD64_32:/scipy-1.6.2-py3.7-solaris-2.11-i86pc.64bit.egg/scipy/spatial/qhull.cpython-37m.so:符号(未知)
- vue.js - 无法运行命令“vue create app1”
- ios - xcodebuild 因 CodeSigning 错误而失败,但 xcode 应用程序成功
- google-cloud-platform - GCP 图像和元数据
- wordpress - wordpress htaccess 特定域