好吧,我发现了scanf还有这个属性:
1. 读取的缓冲区里,读取类型前面的所有空白符会被抛弃,包括回车符。
以及忘记了一条重要的属性:
2. scanf读取会遇空白符则结束,但不会读走空白符(回车符一样)。注:读取数据为字符型除外。
因此我的程序在循环中,第二个scanf读取的第一个是%c,则让程序误认为那个回车符属于输入数据而读写到 char a 中,至于读取%d时,虽然依然在每次循环里scanf都会产生一个漏掉的回车符,不过在下一论scanf的时候会被读走并抛弃。
1. 读取的缓冲区里,读取类型前面的所有空白符会被抛弃,包括回车符。
以及忘记了一条重要的属性:
2. scanf读取会遇空白符则结束,但不会读走空白符(回车符一样)。注:读取数据为字符型除外。
因此我的程序在循环中,第二个scanf读取的第一个是%c,则让程序误认为那个回车符属于输入数据而读写到 char a 中,至于读取%d时,虽然依然在每次循环里scanf都会产生一个漏掉的回车符,不过在下一论scanf的时候会被读走并抛弃。
[此贴子已经被作者于2018-1-16 18:18编辑过]