编程论坛's Archiver

Mycr 发表于 2008-1-10 22:00

while(ch!='?')
        {
                scanf("%d",&a);
                p=(NODE *)malloc(sizeof(NODE));
                p->data=a;
                q->next=p;
                q=p;
                ch=getchar();
        }
我用这段代码给链表里面添加数据,当输入1 2 3 4 5 6 7 ? 时,输出链表得到的值是1 2 3 4 5 6 7 7
而当输入数据是1 2 3 4 5 6 7?时 输出链表得到的值就正确了,这是什么原因?

wenepajtl123 发表于 2008-1-11 09:08

scanf("%d",&a);
while(a!=-1)
    {
        p=(NODE *)malloc(sizeof(NODE));
        p->data=a;
        q->next=p;
        q=p;     
        scanf("%d",&a);   
    }
这样写更有把握一些;
getchar()这种附值很不好弄的,应为它会接受回车做为你的输出,不好控制,除非输入前先清空叫什么缓存流在上边加上句
while(ch!='?')
    {
        scanf("%d",&a);
        p=(NODE *)malloc(sizeof(NODE));
        p->data=a;
        q->next=p;
        q=p;
      while(getchar()!='\n')
       NULL;
      ch=getchar();/*你这样每对a附一下值就要输入一个ch的值看是不是?很麻烦的额*/
    }

呵呵,我一般用到字符操作都用这个的呵呵见笑了

Mycr 发表于 2008-1-11 14:04

哦,明白了,谢谢你哈

页: [1]

Powered by Discuz! Archiver 6.1.0  © 2001-2007 Comsenz Inc.