C 我调用函数扫描某些内容后,程序不继续?有人能查出是什么问题吗?(很长,但请帮忙!)
所以第一部分是我从用户那里得到一个输入,在这个例子中是'1'作为一个字符值,它是从另一个函数接收的C 我调用函数扫描某些内容后,程序不继续?有人能查出是什么问题吗?(很长,但请帮忙!),c,C,所以第一部分是我从用户那里得到一个输入,在这个例子中是'1'作为一个字符值,它是从另一个函数接收的 printf ("\nPlease enter 1, 2, 3 or q: "); option = validateoption(); 在ValidateOptions函数中: int validateoption () { // VALIDATE OPTION FOR FIRST MENU INPUT int keeptrying = 1, rc; char after, i;
printf ("\nPlease enter 1, 2, 3 or q: ");
option = validateoption();
在ValidateOptions函数中:
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;
}
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;
}
这就是问题所在。在事务函数中,它有一个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++;
}
(i=0;i
{
printf(“输入帐号(介于1000和3999之间):”;
账户[i]=validateaccount();
debcred[i]=validatedebcred();
金额[i]=validateamount();
totalinput++;
}
它调用validateaccount函数以获得有效的输入。但在这个功能中:
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;
}
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;
}
int validateaccount(){//验证事务函数中帐户#的输入
int keeptrying=1,rc;
龙我;
炭后;
做
{
rc=scanf(“%ld%c”、&i、&after);
如果(rc==0)
{
printf(“**无效输入重试:”);
清除();
}
如果(在!='\n'之后)
{
printf(“**尾随字符重试:”);
清除();
}
否则如果(i<1000 | | i>3999)
{
printf(“**无效输入重试:”);
}
其他的
{
keeptrying=0;
}
}while(keeptrying==1);
返回i;
}
我输入一个输入,然后程序停止运行!我想输入1000,然后它就什么也不做了。它并没有结束,只是什么也不做,然后我会输入更多的数字,这将成为一个无效的输入!我不知道发生了什么有人能看出问题吗?我是个白痴。它在最终输入后没有显示任何内容,因为没有printf语句再次向用户显示要输入的内容 文字计算机如何遵循方向令人恼火。