C语言中scanf的问题
本人在数据结构调试过程中遇到不解问题,关于scanf语句的问题
1void DelNode(LinkList head)
2{
3 char jx;
4 ListNode *p,*q;
5 char num[5];
6 char name[9];
7 p=head;
8 if (p==NULL) {
9 printf( "No data!\n ");
10 return ;
11 }
12 printf( "==================\n ");
13 printf( " 1.num delete \n ");
14 printf( " 2.name delete \n ");
15 printf( "==================\n ");
16 printf( "delete(y/n?): \n ");
17 scanf( "%c ",&jx);
18 if ((jx== 'y ')||(jx== 'Y '))
{
q=head;
while ((q!=NULL)&&(q-> next!=p))
q=q-> next;
q-> next=p-> next;
free(p);
printf( "already delete!\n ");
}
}
为什么在18行处没有停下来提示输入jx而是直接执行下面了呢?
记得似乎以前在教科书看过,有些印象,但是现在一时找不到了,希望得到大家的帮忙,谢谢了!
[解决办法]
printf( "delete(y/n?): \n ");//加一个getchar();
scanf( "%c ",&jx);
[解决办法]
清空缓冲区的回车。。。
象LS所说,也可以用fflush(stdin);
[解决办法]
这个问题貌似N多人问过
是scanf遗留的回车被下一次接受了
fflush(stdin);也是可以的