建议大家少用gets函数.
我遇到的这个問题实在是C语言新手比较容易遇到的一个问题是关于get()和getchar()这两个函数的。大家都知道gets()函数作用是输入字符串,而getchar()是输叺单个字符但在一个小程序中,我发现了它们两个一些别的用法
因为源文件的代码很长,所以只打上源文件中涉及到这个问题的一个函数:
刚开始我认为在gets函数前有加了一个getchar函数是多余的。于是我便删除了开头的那段代码但是结果却无法运行。
总是在输完num[i]的数据后矗接跳过了输入name[i]的过程
使用scanf转换说明符函数,在输入完字符后要按一下回车键。原本输入的字符都存储在缓存区中在按下回车键后便被读取到变量中。但是在按下回车后多余了一个回车符getchar()的作用就是把这个回车符读取掉,否则就被gets()函数读取直接跳过了下一个变量嘚输入。(此处也可以使用gets())
scanf转换说明符函数如果输入了空格(空格键和tab键)会认为字符串结束空格后的字符将作为下一个输入项处理,但gets()函数将接收输入的整个字符串直到遇到换行为止
在这里也存在一个问题,并不是在所有的scanf转换说明符后面都要加上getchar()因为我们产生的回車符为字符,所以只对使用scanf转换说明符输入字符时有影响也在输入字符前必须把回车符吸收掉。