0

Embedded C クラスの課題に取り組んでいますが、解決できないように見える問題に遭遇しました。私の問題は、それ++iが一度しか変わらないことです。ループが最初に実行iされる0のは 、2 回目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);
    }
}
4

1 に答える 1

8

してはいけないことscanf("%s", &choice): &choice "buffer" には、スキャンする文字列を保持する十分なスペースがありません。スキャンされた文字列は、少なくとも 2 文字の長さで、末尾が '\0'であり、スタック内の他の変数はオーバーライドされます。

scanf("%c", &choice)代わりに使用してください。

于 2013-10-16T13:04:55.850 に答える