功 能: 执行格式化输入
scanf空白符()函数昰通用终端格式化输入函数它从标准输入设备(键盘) 读取输入的信息。可以读入任何固有类型的数据并自动把数值变换成适当的机内格式
scanf空白符()函数返回成功赋值的数据项数,出错时则返回EOF
2.控制串由三类字符构成:
格式化说明符;空白符;非空白符;
附加格式说明字符表修饰符说明
空白字符会使scanf空白符()函数在读操作中略去输入中的一个或多个空白字符,空白符可以是space,tab,newline等等直到第一个非空白符出现为止。
一个非空白字符会使scanf空白符()函数在读入时剔除掉与这个非空白字符相同的字符
1) "%d%d%d"是按十进值格式输入三个数值。
输入时在两个数据之間可以用一个或多个空格、tab键、回车键分隔。一定要跟在数字后面
2) 在用"%c"输入时空格和“转义字符”均作为有效字符。
3) scanf空白符()函数不能正確接受有空格的字符串
scanf空白符()函数接收输入数据时,遇以下情况结束一个数据的输入:(不是结束该scanf空白符函数scanf空白符函数仅在每一個数据域均有数据,并按回车后结束)
① 遇空格、“回车”、“跳格”键。
所以上述程序并不能达到预期目的,scanf空白符()扫描到"I"后面的涳格就认为对str的赋值结束并忽略后面的"love you!"还在键盘缓冲区(关于这个问题,网上我所见的说法都是如此但是,我经过调试发现其实这時缓冲区字符串首尾指针已经相等了,也就是说缓冲区清空了scanf空白符()函数应该只是扫描stdin流,这个残存信息是在stdin中)
4) 键盘缓冲区残余信息問题
getchar();也可以,但是要视具体scanf空白符()语句加那个这里就不分析了,读者自己去摸索吧但是加fflush(stdin);不管什么情况都可行。
这里再给一个用“空格符”来处理缓冲区残余信息的示例:使用了空格控制符后:
scanf空白符 函数原型 本文档属于精品攵档、课件类技术资料转载请联系作者