我正在为我的嵌入式C类做作业,我遇到了一个似乎无法解决的问题。我的问题是++i
只会改变一次。循环第一次运行i
时将0
,第二次运行i
时将1
,但之后无论循环多少次,i
都将始终1
。有人知道问题出在哪里吗?我输入printf("%d\n", i);
只是想看看i
是否改变。
void addCar() {
char choice = 'y';
int i = 0;
while((choice == 'y' || choice == 'Y') && i < MAX_CAR) {
printf("Make: ");
scanf("%s", fleet[i].make);
getDate(1, i);
getDate(2, i);
printf("Purchaseprice: ");
scanf("%lf", &fleet[i].purchasePrice);
++i;
printf("%d\n", i);
printf("Do you want to add another car? (Y/N)");
scanf("%s", &choice);
}
}
最佳答案
不能执行scanf("%s", &choice)
:在&choice“buffer”中没有足够的空间容纳您扫描的字符串-扫描的字符串至少有2个字符长,结尾为“\0”,堆栈中的其他变量将被重写。
改为使用scanf("%c", &choice)
。
关于c -++ i在while循环中仅更改一次,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19404146/