【c语言】我这个for循环提前停止了,求原因。代码如下
int k=0;(k定义在函数外面)void enter_data(flower flower[])/*进货用函数*/{ int m;char c;int b=1;while (b){ for(m=k;m<=300;m++) { printf("请输入花的名称: "); printf("花的名字是: "); scanf("%s",flower[m].name); printf("花的单价为: "); scanf("%f",&flower[m].rate); printf("花的数量是: "); scanf("%d",&flower[m].amount);printf("花的进货时间是: ");scanf("%d",&flower[m].time);printf("花的ID是: ");scanf("%d",&flower[m].ID); k++; printf("是否继续进货? ");scanf("%c",&c);if(c=='Y'){b=1;break; }else(c=='N');{b=0;printf("进货完成"); break; } }}}
最可能的问题
scanf("%c",&c);
输入缓冲中有回车没有清除,windows下一般可用(在它之前)
fflush(stdin);
来清除输入缓冲(在不同类型scanf前,最好都加这个)
另外的问题就是下标溢出,如flower[m].name的空间比输入的小(定义的大小要比实际输入至少多一个)
还有就是输入错,如要求输入数字,你输入了符号
解决问题的最好方案是用调试,单步调试可找出90%以上的问题的
热门标签: