黑马程序员技术交流社区

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

作者: liulunjiang    时间: 2015-10-23 23:33
标题: scanf函数使用中的细节探究3(在视频材料的基础上进行了拓展)
8. 错误如了\n,则应原样输入以保证程序的正确执行(按理应如此,但实际只要输入个除了tab、空格、回车之外的字符即可)。
  1. #include <stdio.h>
  2. int main(int argc, const char * argv[]) {
  3.     int a=-1;
  4.     scanf("%d\n",&a);
  5. printf("%d\n",a);
  6. return 0;
  7. }
复制代码

运行情况:
18\n//原样输入
18
Program ended with exit code: 0
由此进行延伸,具体如下:
  1. #include <stdio.h>
  2. int main(int argc, const char * argv[]) {
  3.     int a=-1;
  4.     scanf("%d\n",&a);
  5. printf("%d\n",a);
  6. return 0;
  7. }
复制代码

运行情况:
18d//多输入了一个d(tab、空格、回车之外的字符)
18
Program ended with exit code: 0
再进一步延伸:
  1. #include <stdio.h>
  2. int main(int argc, const char * argv[]) {
  3.     int a=-1;
  4.     scanf("%dabcdef",&a);//不是/n,是一堆乱七八糟的字符
  5. printf("%d\n",a);
  6. return 0;
  7. }
复制代码

运行情况:
18\//多输入了一个\(tab、空格、回车之外的字符)
18
Program ended with exit code: 0

9. 如果scanf缓冲区中还有内容,则scanf会直接获取而不提示我们再输入。
  1. #include <stdio.h>int main(int argc, const char * argv[]) {    int a,b,c,d,e,f;    scanf("%d%d%d",&a,&b,&c);//第一次输入
  2.     scanf("%d%d",&d,&e);//第二次输入    printf("%d,%d,%d,%d,%d\n",a,b,c,d,e);
  3.     scanf("%d",&f);//第三次输入
  4. printf("%d\n",f);
  5. return 0;
  6. }
复制代码

运行情况:
11 22 33 44 55 66 77 88//实际却只输入了一次
11,22,33,44,55
66
Program ended with exit code: 0

10. 当需要输入整型或实型时,输入的却是字符,那么不仅这个字符无法被接收,后续的其它变量的接收也中断。
  1. #include <stdio.h>
  2. int main(int argc, const char * argv[]) {
  3.     float a=-1;
  4.     int b=-2,c=-3;
  5.     scanf("%f%d%d",&a,&b,&c);
  6.     printf("%f,%d,%d\n",a,b,c);
  7.     return 0;
  8. }
复制代码

运行情况:
4 a 6//第二项按理应输入整形,却输入了字符,所以中断获取,变量b和c保持原值。
4.000000,-2,-3
Program ended with exit code: 0

作者: liulunjiang    时间: 2015-10-24 09:37
这个也比较有意思。。。。。。
作者: ncrbot    时间: 2015-10-25 14:31
O(∩_∩)O好,前排支持
作者: liulunjiang    时间: 2015-10-26 09:03
ncrbot 发表于 2015-10-25 14:31
O(∩_∩)O好,前排支持

感谢{:2_36:}{:2_36:}{:2_36:}
作者: gabriel2016    时间: 2015-10-26 10:45
支持一下!
作者: 汪坤洋    时间: 2015-10-26 23:23
支持一下
作者: liulunjiang    时间: 2015-10-27 08:20
gabriel2016 发表于 2015-10-26 10:45
支持一下!

{:2_36:}{:2_36:}{:2_36:}
作者: liulunjiang    时间: 2015-10-27 08:54
汪坤洋 发表于 2015-10-26 23:23
支持一下

{:2_36:}{:2_36:}{:2_36:}




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