2012-11-11 89 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並使其成爲相同的數據類型? –