黑马程序员技术交流社区

标题: scanf函数使用中的细节探究1(在视频材料的基础上进行了拓展) [打印本页]

作者: liulunjiang    时间: 2015-10-23 23:22
标题: scanf函数使用中的细节探究1(在视频材料的基础上进行了拓展)
本文在教学视频的基础上,进行了思维发散,探索出了一些视频中未讲到的内容。

1. 当要求输入的变量为int型而实际输入的为实型时,只获取整数部分。
  1. #include <stdio.h>
  2. int main(int argc, const char * argv[]) {
  3.     int a;
  4.     scanf("%d",&a);
  5. printf("%d\n",a);
  6. return 0;
  7. }
复制代码

运行情况:
12.33
12//只获取了整数部分
Program ended with exit code: 0

2.当要求输入的变量为float型而实际输入的为字符型时,会导致无法成功接收。
  1. #include <stdio.h>
  2. int main(int argc, const char * argv[]) {
  3.     float a;
  4.     scanf("%f",&a);
  5. printf("%f\n",a);
  6. return 0;
  7. }
复制代码

运行情况:
a
0.000000//无法接受成功,为默认值0
Program ended with exit code: 0

3. 当指定域宽输入时,只接受包括小数点在内的位数。
  1. #include <stdio.h>
  2. int main(int argc, const char * argv[]) {
  3.     float a;
  4.     scanf("%6f",&a);
  5. printf("%f\n",a);
  6. return 0;
  7. }
复制代码

运行情况:
3.141592653
3.141500//只接收了3.1415共六个位
Program ended with exit code: 0

4. 接受单个变量(非字符型)值时,在输入值前,如果输入了空格、回车、tab都会被忽略。
  1. #include <stdio.h>
  2. int main(int argc, const char * argv[]) {
  3.     float a;
  4.     scanf("%f",&a);
  5. printf("%f\n",a);
  6. return 0;
  7. }
复制代码

运行情况:
//回车
//回车
            3.2//tab3.2
3.200000
Program ended with exit code: 0

5. 接受两个乃至多个变量(非字符型)值时,在输入第一个值前,如果输入了空格、回车、tab都会被忽略,此后在输入下一个数之前,如果输入了空格、回车、tab也都会被忽略。
  1. #include <stdio.h>
  2. int main(int argc, const char * argv[]) {
  3.     int a,b,c;
  4.     scanf("%d%d%d",&a,&b,&c);
  5. printf("%d,%d,%d\n",a,b,c);
  6. return 0;
  7. }
复制代码

运行情况:
        2//tab2
//回车
   3//多个空格3
//回车
                 4//tab多空格4
2,3,4
Program ended with exit code: 0

作者: 王世杰    时间: 2015-10-23 23:43
不不不不我不
作者: 强强ios    时间: 2015-10-23 23:49
受教了,经验啊
作者: jazzforlove    时间: 2015-10-23 23:56
总结的不错!
作者: stage    时间: 2015-10-23 23:57
谢谢老板
作者: liulunjiang    时间: 2015-10-24 00:08
筒子们,俺的技术分不够。。。。。。好惨啊!!
作者: liulunjiang    时间: 2015-10-24 00:12
王世杰 发表于 2015-10-23 23:43
不不不不我不

??啊?
作者: liulunjiang    时间: 2015-10-24 00:21
强强ios 发表于 2015-10-23 23:49
受教了,经验啊

哈哈,自己无聊的时候试的,供参考。
作者: liulunjiang    时间: 2015-10-24 00:22
jazzforlove 发表于 2015-10-23 23:56
总结的不错!

嘿嘿,谢谢认可!!!
作者: liulunjiang    时间: 2015-10-24 00:24
stage 发表于 2015-10-23 23:57
谢谢老板

哈,老板个啥啊,技术分不够,我好郁闷啊。
作者: liulunjiang    时间: 2015-10-24 07:26
gabriel2016 发表于 2015-10-24 00:46
支持一下啊!

灰常感谢!
作者: StillSad    时间: 2015-10-24 07:36
scanf接收字符串时不能接收空格,字符串接收要用gets
作者: liulunjiang    时间: 2015-10-24 09:22
另外两个帖子,比这个有意思,这个是视频里的基础部分。。。。。。。。。。结果那俩木有人看了。。。。。。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2