大家帮忙看下怎么回事:for循环执行有问题
typedef struct Lnode{
char data;
struct Lnode *next;
}Lnode,*linklist;
main()
{int m;
linklist ha;
linklist p;
linklist init();
printf( "input m:\n ");
scanf( "%d ",&m);
ha=init(m);
p=ha;
while(p-> next){printf( "%3c ",p-> data);p++;}
printf( "\n ");
}
linklist init(int n)
{int i;
linklist l,p,q;
l=(linklist)malloc(sizeof(Lnode));
q=l;
printf( "input %d chars:\n ",n);
for(i=1;i <=n;++i)
{p=(linklist)malloc(sizeof(Lnode));
if(!p){printf( "error ");exit(fail);}
printf( "input char: ");
scanf( "%c ",&p-> data);
p-> next=null;
q-> next=p;
q=p;
printf( "\n%c ",q-> data); }
return(l);}
执行结果为:
input m:
5
input 5 chars:
input char:
input char:a
input char:
input char:a
input char:
就是说,每次循环都执行两次printf( "input char: ");
但只执行一次scanf( "%c ",&p-> data);
[解决办法]
scanf( " %c ",&p-> data); // %c前面加一空格
试试
[解决办法]
printf( "input char: ");
scanf( "%c ",&p-> data);
——————————————————————
printf( "input char: ");
fflush(stdin);
scanf( "%c ",&p-> data);
[解决办法]
printf( "input char: ");
getchar();//接收你敲的回车键
scanf( "%c ",&p-> data);
[解决办法]
printf( "input char: ");
fflush(stdin);
scanf( "%c ",&p-> data);
或者
printf( "input char: ");
scanf( "%c ",&p-> data);
fflush(stdin);