,
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?时 输出链表得到的值就正确了,这是什么原因? 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的值看是不是?很麻烦的额*/
}
呵呵,我一般用到字符操作都用这个的呵呵见笑了 哦,明白了,谢谢你哈
页:
[1]
