当我输入一个字符串" abcd"到scanf("%d",& var)?

时间:2014-06-30 14:19:13

标签: c gcc scanf

输入字符串

scanf("%d",&var) returns 0.

有一个类似的问题here,但没有提供内部发生的解释。提供的是一种处理这种情况的方法。

GCC如何处理传递给scanf的字符串(“%d”,& var),为什么在这种情况下返回值为0?

2 个答案:

答案 0 :(得分:3)

成功完成后,scanf将返回成功匹配和分配的输入项目的数量;如果早期匹配失败,此数字可以为零。

在格式字符串中看到%d时,scanf需要int类型数据。当您输入字符串代替int时,scanf开始阅读输入,当看到字符时,停止阅读并返回0

答案 1 :(得分:3)

成功时,该函数返回成功填充的参数列表的项数。因此,如果您不键入数字,则读取的项目数将为0.

有关详细信息,请参阅http://www.cplusplus.com/reference/cstdio/scanf/