2012-11-11 46 views
1

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

但这看起来并不像它会工作的一个数组变量,那就是我的代码将使用一个非数组变量。我怎样才能解决这个问题?这两个数组也是不同的数据类型。条码是一个很长的变量,价格是一个双重变量。

回答

2

你想遍历数组,所以是条形码[i]而不是固定位置MAX(条形码[MAX])。

for (i = 0; i < MAX; i++) 
{ 
    printf ("Barcode: "); 
    barcode[i] = validate(); 

    printf ("Price: "); 
    price[i] = validate(); 
} 

替换long long float for 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; 
} 
+0

哎呀我搞砸了,这就是我在我的代码,条码[I],但把条码[MAX]来代替。反正那不是我有什么问题,它是数组输入的验证函数。 –

+0

请参阅知道。 validate函数读取变量(输入)上的输入保存,如果每一个都正常,则返回此float读取。 – dreamcrash

+0

是否将float替换为兼容long long和double variable并使其成为相同的数据类型? –