C语言键盘输入缓冲区问题

 

 1 #include <stdio.h>
 2 
 3 int main() {
 4 
 5     int num=0;//初始化清零
 6 
 7     printf("请输入一个数字:");
 8 
 9     while (!scanf("%d",&num)) {
10 
11         scanf("%*[^\n]");
12 
13         scanf("%*c");
14 
15         printf("输入格式错误!\n请输入一个数字:");
16 
17     }
18 
19     printf("输入正确!num=%d\n",num);
20 
21     return 0;
22 
23 }

 参考:https://www.cnblogs.com/bossren/p/6369330.html

 

 1 #include <stdio.h> 
 2 
 3 int main( void )
 4 {
 5     int i, c;
 6 
 7     for ( ; ; ) 
 8     {   
 9         fputs("Please input an integer: ", stdout);
10         scanf("%d", &i);
11         if ( feof(stdin) || ferror(stdin) )
12         { /* 如果用户输入文件结束标志(或文件已被读完), */
13             /* 或者发生读写错误,则退出循环               */
14             /* do something */
15             break;
16         }   
17         /* 没有发生错误,清空输入流。                 */
18         /* 通过 while 循环把输入流中的余留数据“吃”掉 */
19         while ( (c = getchar()) != '/n' && c != EOF ) ; 
20         /* 使用 scanf("%*[^/n]"); 也可以清空输入流, */
21         /* 不过会残留 /n 字符。                          */
22         printf("%d/n", i); 
23     }   
24 
25     return 0;
26 }

 参考:http://www.360doc.com/content/13/1020/10/9206388_322737032.shtml

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章