为什么我C语言中用gets输入比scanf输入会少输入一个字符串程序就给出结果了

2024-11-23 07:31:29
推荐回答(5个)
回答1:

你这个问题是因为你在输入n之后使用gets函数时,没用清空缓存池,scanf函数接收的数据不会清缓存,缓存中还有n这个数据,所以你在使用gets函数时第一个数接收的是n,后面接收四个,就刚好是五个数。可以使用fflush();函数清缓存。

回答2:

你追问中的那一行不能改成gets(n);,因为n是int型变量而不是数组名或数组指针!gets是专门接收字符串的函数,而scanf可以接收任何类型的变量,二者差异不小。

回答3:

那得看你的程序写成啥样的了,gets是整行读取的,如果缓冲区里有空的回号,也当一个空行输入了,scanf函数如果读取数字,会自动跳过一个空白区,等到非空白符才取数,这样的话会有些差异, 如果你能操制得好,就程序运行效果上应当没有差别的

回答4:

gets函数只能输入单个字符 不能输入字符串

回答5:

你输入的时候带了回车的?gets会把你回车也读进去?