使用%s格式说明符时,为什么在scanf()调用后需要清除输入缓冲区?

时间:2019-04-30 17:28:34

标签: c scanf input-buffer

我知道scanf与格式说明符%d一起使用时会在输入末尾忽略\ n,因为它遇到\ n并意识到它是一个非整数值,并将其留在输入缓冲区中。但是,即使格式说明符为%s,我也无法理解为什么scanf会忽略\ n,因为\ n是有效字符,可以视为输入字符串的一部分。而且,我的代码中的输入字符串长度为80,而我的输入长度仅为6个字符。因此,这里也没有缓冲区溢出的问题。

我在这里查找了与scanf和getchar交错有关的其他问题。但是,他们所有人都使用了%d格式说明符。

toast(this, "John Doe", Toast.LENGTH_LONG)

我的输入:testin

我希望程序会在getchar处暂停输入,因为我正在使用%s且str的长度为80,而在输入return之后我的输入是testin \ n

0 个答案:

没有答案