验证来自另一个函数的数组变量输入

时间:2012-11-11 20:29:46

标签: c

我的程序你好我必须在另一个函数中验证多个数组的输入。所以说我有一个数组:条形码[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);

但这似乎不适用于数组变量,这是我将用于非数组变量的代码。我怎样才能解决这个问题?两个数组也是不同的数据类型。条形码是一个很长的变量,价格是一个双变量。

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;
}