为什么扫描不跟随非空白字符的文档?

时间:2016-06-20 20:27:11

标签: c scanf

documentation on scanf表示任何"非空白字符"在格式中,使函数从流中读取下一个字符,将其与此非空白字符进行比较,如果匹配,则将其丢弃,并继续使用下一个格式的字符。 如果字符不匹配,则函数失败,返回并保留流的后续字符未读。

但是,如果我跑:

int x;
while(scanf("\n%d",&x)==1) printf("%d\n",x);

使用以下输入:

1 2

打印:

1
2

鉴于没有' \ n'在这两个数字中的任何一个之前,为什么scanf会读取它们?这不是针对文档的吗?

2 个答案:

答案 0 :(得分:5)

在链接到您引用的段落的同一页面上,我看到:

  
      
  • 空白字符:该函数将读取并忽略在下一个非空白字符之前遇到的任何空白字符(空白字符包括空格,换行符和制表符 - 请参阅isspace)。 格式字符串中的单个空格可验证从中提取的任何数量的空白字符(包括无)。
  •   

\n是一个空格字符。

因此,通话

scanf("\n%d",&x)
在将数据读入stdio之前,

将从&x中提取并丢弃任意数量的空白字符。

答案 1 :(得分:2)

static func searchCode(codeNumber: String) -> [Data] { let barcodeNumber = codeNumber let remoteURL = NSURL(string: downloadconstants.URLConstants.productfile ) //let characterNumber = codeNumber.characters.count var dataArray = [Data]() } 是一个空格字符。见isspace()

相关问题