《C语言解惑》—— 2.4 空格让scanf莫名其妙

简介:

本节书摘来自华章出版社《C语言解惑》一 书中的第2章,第2.4节,作者:刘振安 刘燕君,更多章节内容可以访问云栖社区“华章计算机”公众号查看。

2.4 空格让scanf莫名其妙

【例2.6】程序中的scanf函数含有空格,是否能通过编译?请分析运行结果。

 #include<stdio.h>
 void main( )
 {
      int x,y,z;
      scanf ( "%d%d%d ", &x, &y, &z );
      printf ( "%d, %d,%d\n", x, y, z );  
}

【分析】在最后一个“%d”和“"”之间留有空格的语句
scanf ( "%d%d%d ", &x, &y, &z );
与没有留空格的语句
scanf ("%d%d%d", &x, &y, &z );
的功能是不一样的。前者在“%d”后面有空格,虽然能通过编译,但运行时的结果不一样。至于是留一个还是多个空格,结果却是一样的。含有空格的程序,在输入三个数据并按回车后,程序丝毫没有反应。再输入一个数据,才能继续运行并输出前三个数据。例如输入数据“1 2 3 4”,则输出“1,2,3”。语句
scanf ( " %d %d %d", &x, &y, &z );
是在格式说明符中间和前面有空格,这种情况能得到正确结果。由此可见,最后一个%d与双引号之间不能有空格。

相关文章
|
2月前
|
C语言
14.C语言:用scanf函数输出数据
14.C语言:用scanf函数输出数据
15 0
|
2月前
|
存储 缓存 编译器
C语言第四弹---printf和scanf详解
C语言第四弹---printf和scanf详解
|
11天前
|
存储 缓存 编译器
C语言之scanf浅析
C语言之scanf浅析
21 0
|
15天前
|
存储 编译器 C语言
C语言中scanf函数的使用
C语言中scanf函数的使用
13 0
|
26天前
|
存储 C语言
爱上C语言:scanf、gets以及getchar输入字符串你真的懂了吗
爱上C语言:scanf、gets以及getchar输入字符串你真的懂了吗
|
2月前
|
存储 程序员 C语言
scanf函数:C语言中的标准输入工具
在C语言编程中,scanf函数是一个非常重要的工具,用于从标准输入(通常是键盘)读取数据。这个函数允许程序员按照指定的格式读取和存储各种类型的数据。scanf函数的名称来源于“scan formatted”,意味着它会按照特定的格式扫描输入。
15 0
|
2月前
|
存储 C语言
C语言用scanf函数数据
C语言用scanf函数数据
11 0
|
2月前
|
存储 C语言 索引
C语言用scanf函数输入数据
C语言用scanf函数输入数据
13 0
|
2月前
|
存储 C语言
C语言用scanf函数程序处理
C语言用scanf函数程序处理
10 0
|
2月前
|
存储 程序员 C语言
C语言的scanf的作用和屏幕需要输入类型
C语言的scanf的作用和屏幕需要输入类型
9 0