关于scanf的问题:

viewfile?f=94A2AAFA23ED35DB5E109BD318924

分别调用13行14行结果如下:

viewfile?f=94A2AAFA23ED35DB5E109BD318924

viewfile?f=94A2AAFA23ED35DB5E109BD318924

原因是,scanf是一个从输入流读取字符并且格式化转换的函数,13行的输入格式因为没有给定字符串的长度,因此将空格也作为字符串的内容一起读取了。然而,空字符被当作了字符串的结尾,读取停止,这个空白字符被当作对b的输入,所以b是空格,d显示出来是hell。

当以14行的方法输入时,这时的空格被当作输入 格式被读取(跳过),转而继续读取后面的字符。

对于int型+char变量使用13行方式可以正确显示,因为%d将输入解释为十进制数,遇到空字符停止,将其他输入当作字符读入。


对于int+int以16行的方式输入时必须使用空字符隔开来读入两个数,而且对于除数字及空字符之外的其他字符都解释为0.

viewfile?f=94A2AAFA23ED35DB5E109BD318924

viewfile?f=94A2AAFA23ED35DB5E109BD318924