scanf函数的返回值 | 您所在的位置:网站首页 › 用scanf函数输入的字符串可不可以带空格 › scanf函数的返回值 |
今天给大家讲一下对于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 实验室设备网 版权所有 |