调用 `scanf` 函数时,它会从左边开始处理格式串中的信息:
对于格式串中的转换说明,`scanf` 会从输入的数据中定位适当类型的项,在寻找输入数据的起始位置时,`scanf` 会跳过空白字符(如果转换说明为 `%c` 则不会跳过),包括空格符、水平和垂直制表符、换页符和换行符;然后读入数据项,并在遇到不可能属于此项的字符时停止(并会将该字符“放回原处”)。如果读入成功,那么 `scanf` 函数会继续处理格式串的剩余部分,否则会立即返回。
对于格式串中的普通字符,如果是空白字符(一个或多个), `scanf` 会从输入中重复读取空白字符直到遇到一个非空白字符为止,格式串中的一个空白字符可以与输入中任意数量(包括零个)的空白字符相匹配;如果是非空白字符, `scanf` 会将把它与下一个输入字符进行比较。如果两个字符相匹配,那么 `scanf` 会跳过输入字符然后继续处理格式串,如果不匹配,则将不匹配的字符放回输入中,然后异常退出。
注意:当 `scanf` 函数成功读取完所有的输入数据后,会将最后的换行符“放在原处”。