如果用户输入整数变量的浮点数,我想打印无效输入.那可能吗?
int a;
scanf("%d",&a); // if user enters 4.35 print invalid input
Run Code Online (Sandbox Code Playgroud)
我试过像这样的人物
if(scanf("%d",&a)==1);
else printf("invalid input");
Run Code Online (Sandbox Code Playgroud)
但如何处理浮动数字.如果用户输入4.35它截断到4但我想要无效输入.
Jon*_*ler 11
由于小数点之前的任何数字的浮点数的开始看起来像一个整数,因此无法%d单独检测到这一点.
您可以考虑阅读整行,fgets()然后分析sscanf():
int a;
int n;
char line[4096];
if (fgets(line, sizeof(line), stdin) != 0 && sscanf(line, "%d%n", &a, &n) == 1)
...analyze the character at line[n] for validity...
Run Code Online (Sandbox Code Playgroud)
(是的,我的意思是与1进行比较; %n转换规范不计入sscanf()等人的返回值.)
scanf()此代码不执行的一件事是在输入数字之前跳过空白行.如果这很重要,你必须编写一个循环来读取(非空)行,然后解析非空行.您还需要确定线路上有多少尾随垃圾(如果有的话).是否允许空白?标签?阿尔法字符?标点?
| 归档时间: |
|
| 查看次数: |
3050 次 |
| 最近记录: |