codeblocks 代码问题(c/c++)

用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/