scanf函数的返回值 您所在的位置:网站首页 用scanf函数输入的字符串可不可以带空格 scanf函数的返回值

scanf函数的返回值

2023-06-15 18:08| 来源: 网络整理| 查看: 265

  今天给大家讲一下对于C语言初学者可能会遇到的问题 1.scanf函数的返回值

下面有一段简单代码:

 

从运行结果中看完全没问题

 

但如果你是用VS编译器,就会出现以下警告:

提示 返回值被忽略:"scanf"  (其实这种情况我们完全可以忽略它,就当成代码是正确的来看待)

 

 想深入了解的可以往下看哈哈!

推荐大家去 cplusplus 网站去查这个函数(不仅是这个函数,它的功能挺强大的),以下是我查的,可以看到返回值类型为 int 

 我们不妨用一个整型变量来接收它,然后再输出。

上干货:scanf返回值输入的数据的个数(通俗点就是scanf()的双引号里有几个%号),不过前提是要正确输入数据。

什么是正确输入数据:

上示例代码:

#define _CRT_SECURE_NO_WARNINGS #include

int main() {          int a = 0;     int b = 0;     int c = 0;     printf("请输入三个整数:");     int x = scanf("%d%d%d",&a,&b,&c);     printf("%d",x);

    return 0; }

1.如果输入 1 2 3,  返回值为 3

 

2.如果输入 1 2 a, 返回值为 2   (a表示我没按照scanf的格式符%d输入,也就是不符合格式符形式的输入)

 

 3.如果输入 1 a a, 返回值为 1

 

4.如果输入 a a a, 返回值为 0

 5.如果输入 a 1 2, 返回值为 0

 

6.如果输入 a 1 a, 返回值为 0

 

结论  :scanf返回的是到第一个错误输入为止  (如果没有错误输入,那就到结尾)  所有符合格式符输入的个数。

但是

改一下语句

 int x = scanf("%d%d%d",&a,&b);   去掉了&c

输入 1 2 3, 返回值为 3

 此式子中格式占位符%d有三个,但对应的输入表项只有两个,但是运行时依旧被要求输入三个(windows,VS/DevC++)。输入的第三个整数确实没有承接变量,它被放到了缓冲区里面。但当输入是 1 2 3 三个整数时,返回值仍是3。

结论:  scanf函数的返回值反映的是按照指定的格式符正确读入的数据的个数。而不管你输入表项是否齐全。(通俗点说,就是在正确输入数据的前提下,双引号中%号的个数)。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有