【发布时间】:2018-04-13 01:51:48
【问题描述】:
首先,如果这个问题没有意义,我深表歉意,因为我的英语不是那么好......
我的问题是,我们如何根据用户输入打印出不同的内容? 我要做的是:当用户输入整数时,程序会打印出输入的数字。当用户输入非整数的内容(如符号和字符)时,程序会打印出“非整数”。
我目前的想法(伪代码)如下:
`int main(){
int value;
printf("Enter numbers");
scanf("%d", &value);
if(value is integer){
printf("%d", value);
} else {
printf("not integer");
}
return 0;
}`
让我着迷的是scanf;通过使用 %d,我假设用户将输入一个整数值,但用户可以输入不是整数的值,因此我无法使用 if 语句 if( value is integer) 进行比较。如何进行比较以确定输入的值是否为整数?
【问题讨论】:
-
通过使用 %d,我假设用户将输入一个整数值,但用户可以输入非整数值它不会正确扫描例如
scanf("%d",&value)和给定11.5一个浮点值scanf()将不会在此处正确扫描,稍后您将如何检查它被截断。 -
没错,scanf("%d") 基本上不是假设用户将输入十进制值(以 10 为底)吗?到目前为止,我主要关心的是知道如何根据用户输入打印不同的东西,让它是整数,或者其他东西,比如字符/符号/等等。
-
一种可能的方法是将输入扫描为string,然后对字符串进行操作并检查它是否包含任何
dot(.)。可以使用atoi()或atof() -
在调用任何
scanf()系列函数时,始终检查返回值(而不是参数值)以确保操作成功。因此,如果用户输入“aboce”,则返回值为 0(并且“aboce”仍将在 I/O 流中stdin)您可以轻松地使用返回值的检查来确定of '用户是否输入了整数 -
@user3629249 我不确定检查返回值是否意味着:
if(scanf("%d",&value)==1)但这有效,谢谢您的帮助