【问题标题】:How to define and call external function in main program if it contains int and char as arguments?如果主程序包含 int 和 char 作为参数,如何在主程序中定义和调用外部函数?
【发布时间】:2017-02-16 10:49:29
【问题描述】:

所以,我有我的代码所在的 main.c 文件,以及我想要进行一些计算的外部 calc.c 文件。我在 main.c (calc.h) 中定义了一个头文件,并且应该在某个时候简单地调用函数 calc.c。在 main.c 中,我通过终端有 3 个输入,我们称它们为 a、b 和 c,这些是一些数字。根据我作为输入提供的数字,我创建了一个保存在“char 文件名”中的文件名(例如 a5b3c7)。然后在 main.c 我做一些计算并在这个“a5b3c7”文件中写一个值表。所以它是一个值数组。 现在,在写下表中的所有值并关闭文件“a5b3c7”之后,我想调用 calc.c 函数并对创建的表中的数字进行一些计算。我需要将一个 int 和它应该使用的文件名作为参数传递。

问题: 我的 calc.c 函数应该有 2 个输入,一个是“int”,另一个是“char”。 在头文件 calc.h 我有:

    int calc(int i, char filename);

我是否应该将 calc.c 函数启动为

    int calc(int i, char filename){
       FILE * pointer;
       int ...;
       double ...;
       pointer = fopen(filename, "r");
       .
       .
       .
    }

?函数和参数的类型是否定义良好? 我现在如何从主程序调用这个函数? 我应该写类似的东西

    int main (void) {
    ...      
    calc(i, filename);
    ...
    }

在尝试让它工作时,我遇到了不同的错误,例如“预期的 'char' 但参数的类型是 'char *'、“传递 'fopen' 的参数 1 使指针从整数而不进行强制转换 [默认启用]” , "预期为 'const char * restrict' 但参数的类型为 'char'"...

感谢帮助,我还在学习中;)

【问题讨论】:

  • 除了一个错误:在 C 中,字符串是 char*,而不是 char。当然,这句话的含义不能用这几句话来形容,但您可以轻松查找“C 中的字符串”材料。

标签: c function header-files


【解决方案1】:

使用char *filename 代替char filename。喜欢

int calc(int i, char *filename);

【讨论】:

  • 好吧,看来至少我摆脱了错误。但是我还有一个额外的问题......如果 calc.c 文件中有 printf 语句,我应该从 main.c 调用它,它是否应该在终端中写入 printf 的输出,或者我需要在我的新文件中创建一个文件calc.c 中的值将被存储?
  • @makeasmile 它在​​终端上打印。
  • 哦,好吧,我很坚持,但事实并非如此,所以看来我还有一些工作要做:P Tnx!
猜你喜欢
  • 2019-01-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-16
  • 1970-01-01
  • 2014-03-01
  • 2020-02-05
  • 1970-01-01
相关资源
最近更新 更多