したがって、最初の部分は、このインスタンスの場合、別の関数から受け取った文字値として「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のように入力しますが、その後は何もしません。何もしないだけで終わらず、さらに数字を入力すると無効な入力になります。何が起こっているのかわかりませんが、誰かが問題を見ることができますか?