调用函数扫描某些内容后,我的程序不继续?有人能找出问题吗?(长,但请帮忙!)

  • 本文关键字:出问题 函数 继续 调用 程序 扫描 c
  • 更新时间 :
  • 英文 :


所以第一部分是我从用户那里得到一个输入,在这个例子中,它是从另一个函数接收的字符值"1"。

printf ("nPlease enter 1, 2, 3 or q: ");
option = 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++;
}

并且它调用validateccount函数来获得有效的输入。但在这个功能中:

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,然后它就什么都不做了。它没有结束,只是什么都不做,然后输入更多的数字,它就变成了无效输入!我不知道发生了什么事有人能看出问题吗?

我是个白痴。在最终输入之后,它没有显示任何内容,因为没有printf语句再次向用户显示要输入的内容!

最新更新