C语言中的getch函数
我测试过程序,getch()不会读取缓冲区里的字符,求解释。而且如果在getch()后还有scanf语句,程序运行至getch按任意键结束程序,而下面的scanf则无法输...
我测试过程序,getch()不会读取缓冲区里的字符,求解释。而且如果在getch()后还有scanf语句,程序运行至getch按任意键结束程序,而下面的scanf则无法输入和运行了?这到底是怎么回事?
#include<stdio.h>
#include<conio.h>
int main()
{
int a;
char c,ch;
scanf("%c",&ch);
printf("%c",ch);
c=getch();
printf("%c",c);
return 0;
}
输入abc回车,输出a。这个时候程序运行到printf("%c",ch);而缓冲区中还有bc回车,这个时候为什么c=getch();不读入b,而是等待输入呢?如果此时继续输入任意字符,比如a,那么会输出a,因为
有printf("%c",c);这句,网上资料说,执行完getch()会自动往下执行。但是如果我在printf("%c",c);后面再加一句scanf("%c",&ch);那就无法执行scanf("%c",&ch);了,屏幕显示a后就立刻结束了,也就是
执行完printf("%c",c);后结束程序,跳过了scanf("%c",&ch);。就是以上两个问题。 展开
#include<stdio.h>
#include<conio.h>
int main()
{
int a;
char c,ch;
scanf("%c",&ch);
printf("%c",ch);
c=getch();
printf("%c",c);
return 0;
}
输入abc回车,输出a。这个时候程序运行到printf("%c",ch);而缓冲区中还有bc回车,这个时候为什么c=getch();不读入b,而是等待输入呢?如果此时继续输入任意字符,比如a,那么会输出a,因为
有printf("%c",c);这句,网上资料说,执行完getch()会自动往下执行。但是如果我在printf("%c",c);后面再加一句scanf("%c",&ch);那就无法执行scanf("%c",&ch);了,屏幕显示a后就立刻结束了,也就是
执行完printf("%c",c);后结束程序,跳过了scanf("%c",&ch);。就是以上两个问题。 展开
4个回答
展开全部
ctrl,
alt和字母、数字、标点符号、空格回车删除不一样,它们不是字符,也就不难怪不能被getch读到了。貌似要监视这两个键,c还不行,因为c只是为基础设计而生,如果要牵涉到UI方面可能需要VC,Java这些语言了。
alt和字母、数字、标点符号、空格回车删除不一样,它们不是字符,也就不难怪不能被getch读到了。貌似要监视这两个键,c还不行,因为c只是为基础设计而生,如果要牵涉到UI方面可能需要VC,Java这些语言了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你getch按任意键结束程序,当然下面的语句都不起作用了。
getch() 即时读一字符,不需等待Enter 键的到来。scanf 要等待 Enter 键的到来 (若 输入缓冲区内已有内容,就可以不等待)。
main()
{
char ch;
int x;
ch = getch();
scanf("%d",&x);
printf("ch=%c x=%d\n",ch,x);
}
拍入 s123 回车
输出 ch=s x=123
getch() 即时读一字符,不需等待Enter 键的到来。scanf 要等待 Enter 键的到来 (若 输入缓冲区内已有内容,就可以不等待)。
main()
{
char ch;
int x;
ch = getch();
scanf("%d",&x);
printf("ch=%c x=%d\n",ch,x);
}
拍入 s123 回车
输出 ch=s x=123
更多追问追答
追问
#include
#include
int main()
{
int a;
char c,ch;
scanf("%c",&ch);
printf("%c",ch);
c=getch();
printf("%c",c);
return 0;
}
我的意思你好像没有理解。比如上面这个程序。
看上面补充
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
把程序贴出看看
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询