什么SCANF在C回报功能?什么SCANF在C回报功能?(What scanf function i

2019-05-13 21:23发布

我知道签名是

int scanf(const char *format, ...)

为了这是什么int值有关?

Answer 1:

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()可以返回01EOF

PS正如其他人所指出的那样,你缺少前面的符号g

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

如果没有符号,你的代码的行为是不确定的。



Answer 2:

从scanf函数 :

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



Answer 3:

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

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

你传递一个未初始化整数SCANF使用它作为写入地址。 从这一点上,任何事情都有可能发生。 最有可能您的应用程序会崩溃。



Answer 4:

它将返回1作为scanf函数返回的项目数成功读取



Answer 5:

我想是因为你忘记了在scanf“与”功能的代码不会正常工作..

int g=0; //init the variable
int p=scanf("%d",&g);

在scanf函数会将输入的值与G变量地址。



Answer 6:

不管你会给在VDU输入变为可变g如果成功读取, p等于1。



文章来源: What scanf function in c returns?
标签: c scanf