方法一:scanf ( “%*[^\n] %*c” );
【注】:
1.这里的星号 '* '表示读入某类型的内容,但是这个内容不保存到变量里,所以后面不需要对应的参量;
也就是说,在%后面加入星号之后,后面可以不放置接收的变量。
2. %*[^\n]表示读入除了回车之外的字符以及读入一个字符后不保存,只有这样,才不会把输入回车吸收,导致不能退出程序。
3.[]内是只读入限定读入的字符,如:[abcd]指的是只读入abcd的字符
4.所以整行代码的解释是"%*[^\n]"首先读入缓冲区的剩余内容,%*c是读入最后一个没有读入的回车;这样就清空的输入缓冲区.
方法二:使用getchar+while;
使用 while(getBuff=getchar()!=‘\n’ && getBuff!=EOF),使用循环把缓冲区的读完,直到读到缓冲区的\n或者是空值;
方法三:使用gets+预留最大值成功;
使用gets,创建一个数组,将缓冲区的内容读完;
方法二方法三都是使用流的方式,把剩余的东西一并读完,不管他是不是\n。
【试过不行的方法】:
一、使用fflush(stdin),这个不行,有人测试vc是ok的,但xcode和linux系统下都不行;
二、rewind(stdin),这个在xcode可以。