第1个回答 2019-09-17
要大致了解下scanf函数。
#include
int
scanf(const
char*
format,
va_list);
功能:格式化输入或扫描(scan
format=Formatting
scanning)。在format串的控制下,读取输入转换并赋值到后面对应的参数变量中。
返回值:正确赋值给va_list中变量的输入项目的个数。
说明:
你的一个例子说明:
scanf("%d",
&c)中的"%d"(d=decimal
,十进制数)是一个转换说明符,告诉scanf,把输入文本中匹配整数格式的部分解释成一个基本整数,然后写到c变量中。如果存在某种错误,行为未定义。
你可以试验下:
int
c
=
7;//定义一个名为x的整数变量,初始值为7
int
count;
count
=
scanf("%d",
&c);//输入格式必须为:数字,用正则描述是:/^[+-]*[0-9]+$/
printf("%d",
c);
printf("%d",
count);
运行这段代码,会发现,如果你的输入是不正确的数字格式
例如包含字母字符,那么输出就不会等于输入的内容,而等于c原先的值。
显然,完成相等值判断的if-else
if-else中的else语句肯定会执行。
另外这句:printf("%d",
count)
会打印出
正确赋值给va_list中变量的输入项目数,所以输入了字母就为0,否则为1。
如果那段代码是别人的例子,要做的功能正是如此么。。:当用户的输入不合法时打印提示"please
input"重新输入,直到用户输入了一个合适的数字。