2017-03-26 95 views
-1

我正在寫一個函數getIntLimited,它只能在特定的最大值和最小值之間的數字之外。目前沒有分配的最大值或最小值,但代碼應該基本上起作用。但是,我似乎得到一個錯誤,說我在函數中的參數太少,但我不確定這是爲什麼。這裏是我的代碼:函數中的參數太少

#include <stdio.h> 
#include <stdlib.h> 

//tools 
void welcome(void); 
void printTitle(void); 
void printFooter(double gTotal); 
void flushKeyboard(void); 
void pause(void); 
int getInt(void); 
double getDouble(void); 
int getIntLimited(int lowerLimit, int upperLimit); 

//app interface 
int yes(void); 
void GroceryInventorySystem(void); 
int menu(void); 

int main(void){ 
    int iVal; 
    double dVal; 
    welcome(); 
    printTitle(); 
    double grandtotal = 1234.57; 
    printFooter(grandtotal); 
    flushKeyboard(); 
    pause(); 
    getInt(); 
    int lowLimit; 
    int upLimit; 
    getIntLimited(int lowLimit, int upLimit); 

    return 0; 
} 


//code your functions here: 

void welcome(void) 
{ 
    printf("---=== Grocery Inventory System ===---"); 
    printf("\n"); 
    return; 
} 

void printTitle(void) 
{ 
    printf("Row |SKU| Name   | Price |Taxed| Qty | Min |  Total |Atn\n"); 
    printf("----+---+---------------+-------+-----+-----+-----+-------------|---"); 
    printf("\n"); 
    return; 
} 

void printFooter(double grandTotal) 
{ 
    printf("--------------------------------------------------+-----------------"); 
    printf("\n"); 

    if (grandTotal > 0) { 
    printf("          Grand Total: |  %12.2lf", grandTotal); 
      } 
    printf("\n"); 
             return; 
} 


void flushKeyboard(void) 
{ 
    int read; 

    while ((read = getchar()) != '\n') 
    return; 
} 

void pause(void) 
{ 
    printf("Press <ENTER> to continue...\n"); 
    flushKeyboard(); 
    return; 
} 

int getInt(void) 
{ 
    int Value; 
    char NL = 'x'; 

    while (NL != '\n') { 
      scanf("%d%c", &Value, &NL); 

if (NL != '\n') { 
      flushKeyboard(); 
      printf("Invalid integer, please try again: \n"); 
     } 
    } 
    return Value; 
} 

int getIntLimited(int lowerLimit, int upperLimit) 
{ 
    int limit; 
    do { 
      limit = getInt(); 

      if(lowerLimit > limit || limit > upperLimit) { 
        printf("Invalid value, %d < %d < %d: ", lowerLimit, limit, upperLimit); 
      } 
    } 

      while(lowerLimit < limit && limit < upperLimit); 
    return limit; 

}        
+2

只是一般性的評論:不是用你自己的話總結錯誤信息,而是複製/粘貼實際的錯誤信息通常更有價值。 –

回答

5

在你main功能,這不是一個函數調用:

getIntLimited(int lowLimit, int upLimit); 

擺脫int關鍵字:

getIntLimited(lowLimit, upLimit); 

另外,還要注意lowLimitupLimit在傳遞到getIntLimited時未初始化。讀取未初始化的值會調用未定義的行爲。

0

getIntLimited(int lowLimit,int upLimit);而不是使用getIntLimited(lowLimit,upLimit);因爲在函數調用期間不需要數據類型