+ -
当前位置:首页 → 问答吧 → 哪位大侠帮忙看下简单程序错在哪里

哪位大侠帮忙看下简单程序错在哪里

时间:2010-09-07

来源:互联网

#include <stdio.h>
#include <stdlib.h>

typedef int datatype;

typedef struct node
{
        datatype data;
        struct node *next;
}linknode;

linknode *create(void)
{
        datatype ch;
        linknode *head;
        linknode *p;
        head=NULL;
        scanf("%d",&ch);
        while(ch!='\n')
        {
                p=(linknode *)malloc(sizeof(linknode));
                p->data=ch;
                p->next=head;
                head=p;
                scanf("%d",&ch);
        }
        return head;
}

void main()
{
        linknode *cc=create();
        do
        {
                printf("%d\n",cc->data);
                cc=cc->next;
        }while(cc!=NULL);

        printf("\n");
       
}


貌似跳不出去循环,一直要输入,不明白问什么,

作者: mafuli007   发布时间: 2010-09-07

输入10不行吗。。

作者: pandaiam   发布时间: 2010-09-07

scanf("%d", &ch)永远取不到‘\n',循环自然永远也跳不出来了

作者: liwangli1983   发布时间: 2010-09-07

scanf("%d",&ch);
后面再加一个scanf,需要再定义一个变量,后面的scanf用来接收前面的scanf丢掉的\n

作者: ilwmin   发布时间: 2010-09-07

本帖最后由 liwangli1983 于 2010-09-07 18:49 编辑

scanf其实是个挺复杂挺危险的函数,没弄明白它的工作原理前要慎用……

另外用判断是否为'\n'的办法判断结束好像也不太合适,因为标准输入是行缓冲的,输入完一个数要回车确认才能把数据刷到请求的进程中,所以每次输入都必然会跟随一个'\n',所以就算解决了扫描'\n'的问题,那么按现有的程序只输入一次循环就结束了

作者: liwangli1983   发布时间: 2010-09-07

相关阅读 更多

热门下载

更多