++我在while循环中只改变一次

时间:2013-10-16 13:01:42

标签: c arrays loops while-loop embedded

我正在为我的嵌入式C类工作,我遇到了一个我似乎无法解决的问题。我的问题是++i只会改变一次。第一次循环i0,第二次i1,但之后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);
    }
}

1 个答案:

答案 0 :(得分:8)

您不能scanf("%s", &choice):&amp; choice“buffer”中没有足够的空间来容纳您扫描的字符串 - 扫描的字符串长度至少为2个字符,并且终止'\ 0',覆盖堆栈中的其他变量。

改为使用scanf("%c", &choice)