用for语句连续给结构体数组变量赋值怎么出问题,高手给解决下,谢谢!

程序如下:
#include <stdio.h>
struct huffnode //哈夫曼树结点
{
char data; //数据域
int weight; //权值
int parent; //双亲域
int left; //左孩子
int right; //右孩子
};
main()
{ struct huffnode ht[42];
int i;
for(i=1;i<=6;i++)
{
printf("第%d个结点的数据,权值:",i);
scanf("%c%d",&ht[i].data,&ht[i].weight);
}
}
运行时第1,2次输入都还正常,到后面就成了
“第3个结点的数据,权值:第4个结点的数据,权值:” 两次输入连续的情况了

应该是第一次输入 1 2(回车)
第二次执行scanf("%c%d",&ht[i].data,&ht[i].weight); %c, &ht[i]接受了输入的回车字符,值就是10
可以再循环内最后加printf("data:%d %d\n", ht[i].data, ht[i].weight);做验证

#include <stdio.h>
struct huffnode //哈夫曼树结点
{
char data; //数据域
int weight; //权值
int parent; //双亲域
int left; //左孩子
int right; //右孩子
};
int main(int argc, char* argv[])
{ struct huffnode ht[42];
char test = '\0';
int i;
for(i=1;i<=6;i++)
{
printf("第%d个结点的数据,权值:",i);
scanf("%c%d",&ht[i].data,&ht[i].weight);
fflush(stdin);//清空输入缓存
}

return 0;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-05-11
#include <stdio.h>
struct huffnode //哈夫曼树结点
{
char data; //数据域
int weight; //权值
int parent; //双亲域
int left; //左孩子
int right; //右孩子
};
main()
{ struct huffnode ht[42];
int i;
for(i=1;i<=6;i++)
{
printf("第%d个结点的数据,权值:",i);
scanf("%c%d",&ht[i].data,&ht[i].weight);
fflush(stdin);//清空输入缓存

}
}
这样就行了
第2个回答  2011-05-12
编译器有问题吗?
相似回答