使用C编程功能。不执行功能

时间:2010-11-21 07:35:56

标签: c

我正在学习C并且正在练习功能章节。所以我写了一个包含3个文件和两个小函数的小程序。真诚地说它不起作用。我没有错误,功能根本没有执行,我不知道为什么。

首先,这是我的头文件,它只声明我的功能。

//employee.h
int addEmployee(void);
int printEmployee(int i);

所以下一个文件是用于函数的定义。

//employee.c
#include "employee.h"
#include <stdio.h>
#include <ctype.h>

int numE;
int i;

int addEmployee(void)
{
    printf("Please type in the number of your employees: ");
    scanf_s("%d", &numE);
    i = numE;
    return i;
}

int printEmployee(int i)
{
    printf("%d", i);
    getchar();
    getchar();
    return i;
}

最后一个文件用于执行功能。

//lab6.c
#include "employee.h"
#include <stdio.h>
#include <ctype.h>


int main ()
{
    int addEmployee();
    int printEmployee();
    return 0;
}

4 个答案:

答案 0 :(得分:4)

使用

int main ()
{
    int addEmployee();
    int printEmployee();
    return 0;
}

你基本上是用0个参数声明了2个新函数。

你没有打电话给你的“旧”功能。

这应该有效,正如其他人指出的那样:

int main ()
{
    int emp = addEmployee();
    printEmployee(emp);
    return 0;
}

因为您正在调用addEmployee(),所以将结果存储到emp,然后使用emp打印printEmployee。由于printEmployee是使用一个参数声明的,因此您只需将emp放入其中即可。

答案 1 :(得分:3)

调用函数时,不要将返回类型放在调用前面。该调用只是函数的名称以及您调用它的任何参数。所以你的主要功能应该是这样的:

int main() {
    addEmployee();
    printEmployee(1);

    return 0;
}

编辑:那么在您的employee.c文件中,您正在尝试使用addEmployee()从命令行中获取一些员工并将其存储在变量i中吗?您希望printEmployee()告诉您输入了多少员工?这是你如何做到的。

//employee.c
#include "employee.h"
#include <stdio.h>
#include <ctype.h>

int i;

int addEmployee(void)
{
    int numE;
    printf("Please type in the number of your employees: ");
    scanf_s("%d", &numE);
    i = numE;
}

int printEmployee()
{
    printf("%d", i);
    getchar();
    getchar();
}

这就是我的所作所为。

首先,我将numE变为使用它的addEmployee函数的本地变量。通常,您应该保持变量范围尽可能小。这意味着将它们降低到使用它们的最低水平。在这种情况下,只有numE需要addEmployee(),这就是它的范围。

其次,我从int printEmployee(int i)中删除了参数。它覆盖了文件级别的i变量。所以你将numE中的数字存储在i中,但是当你输入printEmployee()时,你创建了一个隐藏它的新的空i。当您从main调用printEmployee(1)时,您将值1传递到i中的printEmployee(int i)。删除参数后,您将停止隐藏employee.c的{​​{1}}。

最后,我删除了退货。函数不必返回C中的任何内容。如果您不打算使用返回,那么只需添加一行代码即可。

i文件中,您需要进行一项更改才能完成此项工作。从调用lab6.c

中删除参数
printEmployee()

应该按照你现在的预期方式工作。

答案 2 :(得分:2)

你想要:

int main () 
{ 
    addEmployee(); 
    printEmployee(1); 

    return 0; 
} 

答案 3 :(得分:1)

改变这个:

int main ()
{
    int addEmployee();
    int printEmployee();
    return 0;
}

对此:

int main ()
{
    addEmployee();
    printEmployee();
    return 0;
}

您正在重新声明这些功能而不是调用它们。

您还必须将printEmployee函数更改为不接受整数参数;看起来它应该只使用与addEmployee相同的全局变量。不过这是一个坏主意;通常要避免全局变量。 addEmployee应该返回您可以存储的员工ID,然后传入printEmployee