我的程序你好我必须在另一个函数中验证多个数组的输入。所以说我有一个数组:条形码[MAX]。我希望用户将他们的条形码输入到这个数组中,所以无论他们有多少条形码,他们都会将它输入到条形码[MAX]变量中。我需要验证此输入以确保它是正确的格式,所以基本上大于0,没有尾随字符。此验证需要来自一个单独的功能。
所以它会是这样的:
for (i = 0; i < MAX; i++)
{
printf ("Barcode: ");
barcode[MAX] = validate();
printf ("Price: ");
price[MAX] = validate();
}
将在主函数中,调用用户输入其条形码/价格并在单独的函数中验证输入。但我不知道如何为数组输入编写验证函数。我之前写过一个只是一个简单的变量但是数组让我困惑。我之前的验证代码如下:
do
{
rc = scanf ("%llf%c", &barcode[MAX], &after);
if (rc == 0)
{
printf ("Invalid input try again: ");
clear();
}
else if (after != '\n')
{
printf ("Trailing characters detected try again: ");
clear();
}
else if ()
{
}
else
{
keeptrying = 0;
}
} while (keeptrying == 1);
但这似乎不适用于数组变量,这是我将用于非数组变量的代码。我怎样才能解决这个问题?两个数组也是不同的数据类型。条形码是一个很长的变量,价格是一个双变量。
答案 0 :(得分:2)
您希望遍历数组,因此条形码[i]而不是固定位置MAX(条形码[MAX])。
for (i = 0; i < MAX; i++)
{
printf ("Barcode: ");
barcode[i] = validate();
printf ("Price: ");
price[i] = validate();
}
将long long float替换为float,you can't use long long float in c。
验证可以是这样的:
int validate()
{
char after;
float input;
int rc, keeptrying = 1;
do
{
printf("Give me a code bar :\n");
rc = scanf ("%f%c", &input, &after);
if (rc == 0)
{
printf ("Invalid input try again: \n");
while ( getchar() != '\n' );
}
else if (after != '\n')
{
printf ("Trailing characters detected try again: \n");
while ( getchar() != '\n' );
}
else
keeptrying = 0;
} while (keeptrying == 1);
return input;
}