为了账号安全,请及时绑定邮箱和手机立即绑定

在sa f()格式字符串中尾随空格的效果如何?

在sa f()格式字符串中尾随空格的效果如何?

C
婷婷同学_ 2019-06-17 16:17:00
在sa f()格式字符串中尾随空格的效果如何?有什么区别scanf("%d")和scanf("%d ")在这段代码中,格式字符串中的尾部空白有什么区别?#include <stdio.h>int main(void){     int i, j;     printf("enter a value for j ");     scanf("%d  ",&j);     printf("j is %d\n", j);     printf("enter a value for i ");     scanf("%d", &i);     printf("i is %d\n", i);     return 0;}如何scanf()函数在格式说明符后面添加空格时实际工作,如scanf("%d  ", &j);?
查看完整描述

3 回答

?
慕仙森

TA贡献1827条经验 获得超7个赞

扫描格式的空白字符会导致它显式地读取和忽略尽可能多的空白字符。所以scanf("%d ", ...,在读取一个数字之后,它将继续读取字符,放弃所有空白,直到它在输入中看到一个非空白字符。该非空白字符将保留为输入函数要读取的下一个字符。

使用您的代码:

printf("enter a value for j ");scanf("%d  ",&j);printf("j is %d \n", j);

它将打印第一行,然后等待您输入一个数字,然后之后继续等待某事号码。所以如果你只是键入5进入,它将出现挂起-您需要键入另一行与一些非空白字符在其中继续。如果你然后键入6进入,这将成为i,所以您的屏幕将类似于:

enter a value for j 56j is 5enter a value for i i is 6

此外,由于大多数scanf%-转换也跳过前导空格(除%c%[%n)、空间以前%-转换是不相关的("%d""  %d"将采取同样的行动)。因此,在大多数情况下,除非您知道您特别需要它们的特殊效果,否则您应该避免扫描转换中的空格。


查看完整回答
反对 回复 2019-06-17
?
白衣染霜花

TA贡献1796条经验 获得超10个赞

格式字符串中的空白字符(空格、换行符、水平和垂直制表符)与输入中任意数量的空白字符匹配。
在你的第一个案例中

  scanf("%d  ",&j);

当它遇到空白字符(Wsc)时' '然后,它将吃掉用户输入的所有空白,包括\n论压榨进入它将有望进入一个非WSC。在这种情况下,您的程序将通过按下克特 + Z.


查看完整回答
反对 回复 2019-06-17
?
红糖糍粑

TA贡献1815条经验 获得超6个赞

中的空格字符scanf格式匹配任意数量的空白字符,如isspace..因此,如果您有尾随空格、换行符、制表器或任何其他空格字符,那么它也将被scanf在它回来之前。


查看完整回答
反对 回复 2019-06-17
  • 3 回答
  • 0 关注
  • 437 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信