我正在为我的嵌入式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/

10-12 18:09