scanf 的详细规则其实非常细致,如果真有兴趣自己随便在哪都能查到。还用一直在这问?
scanf 将格式化字符串内的字符分成三类,并区别对待。
一类是转换指示符(conversion specification),指 % 和它后面跟的一些字符。比如 %%, %*c, %10s, %[^0123456789] 都是合法的。
详细的可能就会问了,有哪些合法的控制字符? %和控制字符之间能有哪些东西?如果 % 后面跟的不是合法控制字符呢?如果有兴趣,自己查。
一类是空白字符(white space),包括空格,\n, \t 之类的。它出现在格式化字符串内是指示 scanf 从输入流中忽略所有的空白字符,直至遇到非空白字符(该字符依然保留在流中)或读尽流。
最后一类是普通字符(ordinary character)。它指示向后读一个字符,并期待所读字符与指示相同。否则读取失败。
scanf 族的函数经常会面临失败。除了输入的数值不合法(比如指示 %d 的时候却输入了 abc)以外,也可能由输入流异常引起。
scanf 什么情况下会失败?失败时 scanf 有怎样的行为?scanf 的返回值是什么?
如果楼不是伸手党,如果楼主真心想学好编程,以上问题就当作留给楼主的作业。找到答案后,把它回在下面。
不管你是自已动手写程序试验也好,还是上网找资料也行,这些问题都不难回答。但经过此次,相信你前路的坎坷能减少许多。