【发布时间】:2018-03-19 17:42:35
【问题描述】:
我有下一个代码:
#include <stdio.h>
int main(){
char* a;
int b;
if(fscanf(stdin,"%s%d",a,&b)!=2){
printf("Bad Args!!");
}
return 0;
}
当我尝试添加下一个输入时 -
F52352354
5F2352354
我得到下一个输出:
对于第一个 - Bad Arg
第二个没什么
另一件麻烦事是,当我尝试检查大数字时,int 的范围和 double 的范围内我得到输入是好的。
我的问题是,是否有一种优雅的方式来检查参数(在 C 中而不是在 C++ 中)?
【问题讨论】:
-
我不明白你在问什么,但是:1.
a在对fscanf的调用中未初始化。未定义的行为。 2. 不要使用scanf进行用户输入。 -
@melpomene 感谢您的回答。 2. 你对从用户那里获得意见的建议是什么?
-
@melpomene 为什么我们不应该使用
scanf()? -
@J...S 它从根本上不符合用户的期望(例如,按 Enter 应该做一些事情:接受输入,或打印错误,或任何事情)。很难正确使用。即使您做对了并检测到错误,从这些错误中恢复也更加困难或不可能。
-
@J...S 例如:stackoverflow.com/q/46631193/1848654