#include "stdio.h"
main()
{
char con='y';
for(;con=='y';)
{
con=getchar();
}
}
如果第一次输入Y不能做到循环,有人建议在con=getchar();后加一个getchar();
这个程序是可以解决。但是我觉得不是那么简单的。
因为第一次输入的所有ASCII码都被存到一个输入缓冲区中,每次GETCHAR是从缓冲区中取字符。如果循环一次后GETCHAR()发现缓冲区中还有字符,就不等待终端输入,而是直接取缓冲区中尚没有被取的最早输入的字符。因此如果第一次用户不小心输入了YY\N,则缓冲区中存在的字符一次getchar();是吃不干净的.
所以我希望能有什么不太复杂的方法可以清空缓冲区,这应该是最好的方法吧!!
希望大家给点建议.分值不多,但是我想这是个大家都能遇到的问题.
(别说用GETS(),我希望能用GETCHAR())
14 个解决方案
#1
C里面似乎没有刷新流缓冲的函数
#2
可以判断下一个字符是否是回车(ASCII=10),如果不是,就提取下一个字符,直到是回车符为止,再继续执行循环体的内容。
#include "stdio.h"
main()
{
char con='y',temp;
for(;con=='y';)
{
con=getchar();
temp=getchar();
for(;temp!=10;)
temp=getchar();
}
}
#include "stdio.h"
main()
{
char con='y',temp;
for(;con=='y';)
{
con=getchar();
temp=getchar();
for(;temp!=10;)
temp=getchar();
}
}
#3
fflush(stdin)
#4
ffush(stdin)
#5
我觉得用getch()比较好
#6
fflush(stdin)需要什么H,
TC2中有支持吗?
getch()又是什么东东?是不是C的函数?
: showler(雪山飞豹) 的方法我觉得可行,我去试试.
但是似乎有点麻烦,不是吗?
TC2中有支持吗?
getch()又是什么东东?是不是C的函数?
: showler(雪山飞豹) 的方法我觉得可行,我去试试.
但是似乎有点麻烦,不是吗?
#7
getch() 当然是C的函数。有几个相似的函数,getch(), getche(),
getchar()。他们的区别在于:
getch() 从键盘输入一个字符,立刻返回,并在屏幕上显示。
getche() 从键盘输入一个字符,立刻返回,不在屏幕上显示。
getchar() 从键盘输入一个字符,不返回,直到用户键入回车才返回。
字符在屏幕上显示。
getchar()。他们的区别在于:
getch() 从键盘输入一个字符,立刻返回,并在屏幕上显示。
getche() 从键盘输入一个字符,立刻返回,不在屏幕上显示。
getchar() 从键盘输入一个字符,不返回,直到用户键入回车才返回。
字符在屏幕上显示。
#8
getch(), getche(), getchar()都是"stdio.h"吗?
TC2支持吗?
TC2支持吗?
#9
潭的书上就有GETCHAR(),原来还有那么多相关的库函数,真开眼!!!
我得找一本完整介绍TC2所有函数库的书,jishiping(JSP) 英雄,有介绍吗??
我得找一本完整介绍TC2所有函数库的书,jishiping(JSP) 英雄,有介绍吗??
#10
在TC2的帮助中只有GETC,GETCHAR,GETS,GETW.
没有GETCH,GETCHE.
但是写GETCH,GETCHE也能使,难道HELP还能留一手??
没有GETCH,GETCHE.
但是写GETCH,GETCHE也能使,难道HELP还能留一手??
#11
这么看来还是showler(雪山飞豹)的方法是可行的
#12
jishiping(JSP) 和Wugifer() 的方法也都可行,但是为什么在TC2的帮助中都查不到这些函数呢?这些函数都是可以使用的!!
#13
getch()是宏
#14
宏?
DEFINE还是INCLUDE?
DEFINE还是INCLUDE?
#1
C里面似乎没有刷新流缓冲的函数
#2
可以判断下一个字符是否是回车(ASCII=10),如果不是,就提取下一个字符,直到是回车符为止,再继续执行循环体的内容。
#include "stdio.h"
main()
{
char con='y',temp;
for(;con=='y';)
{
con=getchar();
temp=getchar();
for(;temp!=10;)
temp=getchar();
}
}
#include "stdio.h"
main()
{
char con='y',temp;
for(;con=='y';)
{
con=getchar();
temp=getchar();
for(;temp!=10;)
temp=getchar();
}
}
#3
fflush(stdin)
#4
ffush(stdin)
#5
我觉得用getch()比较好
#6
fflush(stdin)需要什么H,
TC2中有支持吗?
getch()又是什么东东?是不是C的函数?
: showler(雪山飞豹) 的方法我觉得可行,我去试试.
但是似乎有点麻烦,不是吗?
TC2中有支持吗?
getch()又是什么东东?是不是C的函数?
: showler(雪山飞豹) 的方法我觉得可行,我去试试.
但是似乎有点麻烦,不是吗?
#7
getch() 当然是C的函数。有几个相似的函数,getch(), getche(),
getchar()。他们的区别在于:
getch() 从键盘输入一个字符,立刻返回,并在屏幕上显示。
getche() 从键盘输入一个字符,立刻返回,不在屏幕上显示。
getchar() 从键盘输入一个字符,不返回,直到用户键入回车才返回。
字符在屏幕上显示。
getchar()。他们的区别在于:
getch() 从键盘输入一个字符,立刻返回,并在屏幕上显示。
getche() 从键盘输入一个字符,立刻返回,不在屏幕上显示。
getchar() 从键盘输入一个字符,不返回,直到用户键入回车才返回。
字符在屏幕上显示。
#8
getch(), getche(), getchar()都是"stdio.h"吗?
TC2支持吗?
TC2支持吗?
#9
潭的书上就有GETCHAR(),原来还有那么多相关的库函数,真开眼!!!
我得找一本完整介绍TC2所有函数库的书,jishiping(JSP) 英雄,有介绍吗??
我得找一本完整介绍TC2所有函数库的书,jishiping(JSP) 英雄,有介绍吗??
#10
在TC2的帮助中只有GETC,GETCHAR,GETS,GETW.
没有GETCH,GETCHE.
但是写GETCH,GETCHE也能使,难道HELP还能留一手??
没有GETCH,GETCHE.
但是写GETCH,GETCHE也能使,难道HELP还能留一手??
#11
这么看来还是showler(雪山飞豹)的方法是可行的
#12
jishiping(JSP) 和Wugifer() 的方法也都可行,但是为什么在TC2的帮助中都查不到这些函数呢?这些函数都是可以使用的!!
#13
getch()是宏
#14
宏?
DEFINE还是INCLUDE?
DEFINE还是INCLUDE?