0

我正在为我的嵌入式 C 课程做作业,但遇到了一个我似乎无法解决的问题。我的问题是它++i只会改变一次。循环第一次运行i将是0,第二次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);
    }
}
4

1 回答 1

8

您不能这样做scanf("%s", &choice): &choice "buffer" 中没有足够的空间来保存您扫描的字符串 -扫描的字符串至少有 2 个字符长,以 '\0' 结尾,并且堆栈中的其他变量被覆盖。

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

于 2013-10-16T13:04:55.850 回答