0

したがって、最初の部分は、このインスタンスの場合、別の関数から受け取った文字値として「1」であるユーザーからの入力を取得することです。

printf ("\nPlease enter 1, 2, 3 or q: ");

    option = validateoption();

validateoption 関数では:

int validateoption () {  // VALIDATE OPTION FOR FIRST MENU INPUT

int keeptrying = 1, rc;
char after, i;

do
{
    rc = scanf ("%c%c", &i, &after);
    if (i == 'q')
    {
        break;
    }
        else if (rc == 0)
        {
            printf (" **Invalid input try again: ");
            clear();
        }
            else if (after != '\n')
            {
                printf (" **Trailing characters try again: ");
                clear();
            }
                else if (i < '1' || i > '3')
                {
                    printf (" **Invalid input try again: ");
                }
                    else
                    {
                        keeptrying = 0;
                    }

} while (keeptrying == 1);

return i;

}

したがって、「1」の文字値が入力され、トランザクション関数が呼び出されます

    do
    {
        transaction(accounts, debcred, amount);
    } while (option == '1');

ここで問題が発生します。トランザクション関数には for ループがあります

for (i = 0; i < MAX; i++)
{
    printf ("Enter an account number (between 1000 and 3999): ");
    accounts[i] = validateaccount();

    debcred[i] = validatedebcred();

    amount[i] = validateamount();

    totalinput++;
}

そして、validateaccount 関数を呼び出して有効な入力を取得します。しかし、この関数では:

int validateaccount() {  // VALIDATE INPUT FOR ACCOUNT # IN TRANSACTION FUNCTION

int keeptrying = 1, rc;
long i;
char after;

do
{
    rc = scanf ("%ld%c", &i, &after);

    if (rc == 0)
    {
        printf (" **Invalid input try again: ");
        clear();
    }
        else if (after != '\n')
        {
            printf (" **Trailing characters try again: ");
            clear();
        }
            else if (i < 1000 || i > 3999)
            {
                printf (" **Invalid input try again: ");
            }
                else
                {
                    keeptrying = 0;
                }

} while (keeptrying == 1);

return i;

}

入力を入力すると、プログラムの実行が停止します! 私は1000のように入力しますが、その後は何もしません。何もしないだけで終わらず、さらに数字を入力すると無効な入力になります。何が起こっているのかわかりませんが、誰かが問題を見ることができますか?

4

1 に答える 1

2

私はアホです。ユーザーに何を入力するかを示すprintfステートメントが再びなかったため、最終入力の後に何も表示されませんでした!

于 2012-11-13T03:32:40.587 に答える