2017-03-26 18 views
-1

私は、特定の最大値と最小値の間の数値だけを除くことができる関数getIntLimitedを作成しています。現時点では割り当てられた最大値または最小値はありませんが、コードは本質的には機能します。しかし、私は関数に引数が少なすぎると言っているエラーが出ているようですが、なぜそれがわかりませんか。ここに私のコードです:関数内の引数が少なすぎます

getIntLimited(int lowLimit, int upLimit); 

intキーワードを取り除く:あなたのmain機能で

#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

、これは関数呼び出しではありません。また

getIntLimited(lowLimit, upLimit); 

、注意してlowLimitupLimitは、getIntLimitedに渡されると初期化されません。初期化されていない値を読み取ると、未定義の動作が発生します。

0

getIntLimited(int lowLimit、int upLimit);これを使用する代わりに、getIntLimited(lowLimit、upLimit);関数呼び出し中にデータ型が必要ないため、

関連する問題