用codeblock写了一个代码,作用是当输入*时,输出*之前的符号,但是为什么输入*需要按回车才会运行然后输出之前的字符
代码如下,大佬帮忙看一下。
#include"stdio.h"
#include"stdlib.h"
typedef struct node
{
char date;
struct node*next;
}node,*link;
link fun(link t)
{
node *s;
char c;
int flag=1;
while(flag)
{
c=getchar();
if(c!='*')
{
s=(node*)malloc(sizeof(node));
s->date=c;
s->next=t->next;
t->next=s;
}
else
flag=0;
}
return t;
}
void main()
{
link t;
t=(link)malloc(sizeof(node));
t->next=NULL;
node* p;
t=fun(t);
p=t->next;
while(p!=NULL)
{
printf("%c\n",p->date);
p=p->next;
}
}
因为getchar();会截获字符 而且是根据回车截止的。
获取从键盘输入的数据,都要按回车确认才能接收。
当然要按回车了。你不按回车,控制台下你的当前行字符就没有被程序所捕获,c=getchar()就不会执行,程序就一直停在这里等待你按回车获取字符。
您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632
也许对你有帮助:https://blog.csdn.net/it_xiangqiang/category_10581430.html
非常感谢您使用有问必答服务,为了后续更快速的帮您解决问题,现诚邀您参与有问必答体验反馈。您的建议将会运用到我们的产品优化中,希望能得到您的支持与协助!
速戳参与调研>>>https://t.csdnimg.cn/Kf0y
如果不等回车键,可以用peek函数。参看 https://www.cplusplus.com/reference/istream/istream/peek/