c - 函数中的参数太少

标签 c function parameters arguments

我正在编写一个函数 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;

}                             

最佳答案

在您的 main 函数中,这不是函数调用:

getIntLimited(int lowLimit, int upLimit);

去掉 int 关键字:

getIntLimited(lowLimit, upLimit);

另请注意,lowLimitupLimit 在传递给 getIntLimited 时并未初始化。读取未初始化的值会调用未定义的行为。

关于c - 函数中的参数太少,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43024598/

相关文章:

c - 嵌入式,用AVR/8051编译器编译PIC Controller 不可以吗

c - 在C中使用calloc为char数组分配内存时如何避免 'possibly lost'内存

java - Java 中具有通用返回类型的方法调用

c++ - Linux 内核中的 C func 签名 : include/linux/sched. h

c++ - 使用 (const int &var) 形式参数代替 (const int var) 有什么好处吗?

c - 使用msg_accrights在进程之间发送&fd是一个bug吗?

c - 如何将 VL53L0X header 包含到我的 STM32L 项目中

c++ - 函数声明中的类声明

Swift - 修改 UIWebView 中的 NSURLRequest

javascript - 在 Javascript/jQuery 中,(e) 是什么意思?