我试图从 io.h 调用 main.c 中的一个函数,该函数从文件中读取数据,将该数据存储到多个结构中,然后以某种方式让我将不同的结构作为参数传递给 main 中的后续函数。后面的函数将在其他文件中定义,例如 alg.h。
我该怎么做呢?我是否使用 extern 并使结构全局化并将它们放在单独的文件中?是否可以让 alg.h 中的函数具有其中一个结构的返回类型?这取决于我的包含顺序吗?
下面粘贴的代码符合并有效,但任何移动任何结构的尝试都会导致程序无法编译。
此外,是否可以在 alg.h 中声明一个结构,然后在 alg.h 中声明具有该结构作为参数的函数。然后在 main.c 中,初始化该结构并将其传递给在 io.h 中声明的函数,给该结构一些值,将其返回给 main.c,然后将其传递给在 alg.h 中声明的函数?我知道这听起来像一个类,但我需要一个 C 解决方案,而且我只需要一个浮动的结构实例。
谢谢。
io.h
struct s1 {
int num1;
double num2;
};
struct s2 {
int num3;
double num4;
};
void io_init(struct s1*, struct s2*);
io.c
#include <stdio.h>
#include <stdlib.h>
#include "io.h"
void io_init(struct s1* s1i, struct s2* s2i)
{
s1i->num1 = 5;
s1i->num2 = 2.4;
FILE *fp;
char line[80];
fp = fopen("input.txt","rt");
fgets(line, 80, fp);
sscanf(line,"%i",&s2i->num3);
fgets(line, 80, fp);
sscanf(line,"%i",&s2i->num4);
fclose(fp);
}
算法
void ga_init(struct s1);
算法
#include <stdio.h>
#include "io.h"
#include "ga.h"
void ga_init(struct s1 s1i)
{
printf("%i", s1i.val1);
}
主.c:
#include <stdio.h>
#include "io.h"
#include "ga.h"
int main() {
struct s1 s1i;
struct s2 s2i;
io_init(&s1i, &s2i);
ga_init(s1i);
return 0;
}