首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

大家帮忙看下咋回事:for循环执行有有关问题

2012-03-17 
大家帮忙看下怎么回事:for循环执行有问题typedefstructLnode{chardatastructLnode*next}Lnode,*linklist

大家帮忙看下怎么回事: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);

热点排行