为了账号安全,请及时绑定邮箱和手机立即绑定

c中的什么scanf函数返回?

c中的什么scanf函数返回?

C
红颜莎娜 2019-09-03 15:54:48
我知道签名是int scanf(const char *format, ...)这个int值与什么有关?
查看完整描述

3 回答

?
喵喔喔

TA贡献1735条经验 获得超5个赞

来自scanf:


成功时,该函数返回成功读取的项目数。如果发生匹配故障,此计数可以匹配预期的读数或更少,甚至为零。如果在成功读取任何数据之前输入失败,则返回EOF。


查看完整回答
反对 回复 2019-09-03
?
忽然笑

TA贡献1806条经验 获得超5个赞

从技术上讲,这是UB(未定义的行为)。


int g;

int p=scanf("%d",g);

                 ^

您将一个整数化的整数传递给scanf以将其用作要写入的地址。从现在开始,任何事情都可能发生。很可能你的应用程序会崩溃。


查看完整回答
反对 回复 2019-09-03
?
catspeake

TA贡献1111条经验 获得超0个赞

从man页面:


NAME

       scanf,  fscanf, sscanf, vscanf, vsscanf, vfscanf 


       ...


RETURN VALUE

       These functions return the number of input items  successfully  matched

       and assigned, which can be fewer than provided for, or even zero in the

       event of an early matching failure.


       The value EOF is returned if the end of input is reached before  either

       the  first  successful conversion or a matching failure occurs.  EOF is

       also returned if a read error occurs, in which case the error indicator

       for  the  stream  (see ferror(3)) is set, and errno is set indicate the

       error.

在你的情况下,scanf()可以返回0,1或EOF。


PS正如其他人所指出的那样,你在前面错过了一个&符号g:


int p=scanf("%d",&g);

没有&符号,代码的行为是不确定的。


查看完整回答
反对 回复 2019-09-03
  • 3 回答
  • 0 关注
  • 377 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信