我想知道在这样的情况下会发生什么:
printf("How many sides do the polygon has: ");
scanf_s("%d",&n);
也就是说,当 scanf 期望输入是一个整数,但用户输入的却是一个浮点值,一个 double 值,或者其他任何东西......然后将值赋给变量,还是它只是出现在后台?它的存在是否会以某种方式对程序以后的工作方式产生不利影响?
最佳答案
but instead the user enters a float value, a double, or anything else
用户总是输入一个字符串。这就是 I/O 的工作方式。
使用格式字符串,scanf()
尝试从输入字符串中提取第一个看起来像使用格式说明符的数据的文本表示的子字符串,然后它恢复将产生使用具有相同格式说明符的 printf()
格式化时的上述文本表示。
在您的示例中,由于 %d
,scanf()
使用输入字符串中它在字符串开头找到的尽可能多的数字。它跳过前导空格,读取可选符号(如果存在),读取数字并在到达非数字字符时停止读取。它使用符号和读取的数字重新创建数字并将其放在作为参数接收的地址中。
它使用字符串的其余部分来满足下一个格式说明符,如果有的话,或者如果格式字符串中没有更多的说明符,则完全忽略它(但它不使用它)。
关于c - 当输入不匹配格式时,scanf_s 返回什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49628460/