【发布时间】:2020-05-28 12:45:02
【问题描述】:
我正在尝试在另一个 .c 中将一些数据添加到我的结构中,但我遇到了段错误。
这是我的 main.c 的一个示例。 我使用“REGISTER *reg”来使用其他文件中的结构。
#include "otherfile.c"
int main(){
char mom[30];
char baby[30];
int age;
REGISTER *reg;
scanf("%s", mom);
scanf("%s", baby);
scanf("%d", &age);
set_mothersName(reg,mom);
set_childsName(reg,baby);
set_age(reg,age);
return 0;
}
在另一个文件中,我试试这个:
typedef struct register{
char mothersName[30];
char childsName[30];
int age;
}REGISTER;
void set_mothersName(REGISTER *reg, char* name){
strcpy(reg->mothersName,name);
}
void set_childsName(REGISTER *reg, char*name){
strcpy(reg->childsName,name);
}
void set_age(REGISTER* reg, int age){
reg->age = age;
}
我认为我用错了指针,但我不知道在哪里以及为什么。
【问题讨论】:
-
REGISTER *reg;是一个未初始化的指针 - 它没有指向一个有效的REGISTER对象 -
所以要初始化它,我必须使用动态分配吗?
-
在这种情况下,您可以简单地将其声明为
REGISTER reg;并将&reg作为参数传递给您的函数 -
@UnholySheep 但是然后它得到“错误:'reg'的存储大小不知道”
-
在这种情况下,您没有包含您声称自己包含的文件。请创建一个真实的minimal reproducible example
标签: c