typedef struct
{
char Path[100];
} DirectoryInformation;
void Getskelutofdirectorie(char * dir, int lvl)
{
DirectoryInformation DI[100];
char cwd[1024];
//Search recursive
// where I want to put the path on the struct to use on main
getcwd(cwd, sizeof(cwd));
strcpy(DI[0].Path, cwd);
}
int main(void)
{
DirecoryInformation DI[100];
printf("%s", DI[0].Path);
}
我可以打印路径但是如果我在main函数上使用它将起作用。
有人可以帮帮我吗?
执行时没有错误,但是当我打印出make segmentation fault
时答案 0 :(得分:0)
您的代码通过使用具有自动存储持续时间且未初始化的变量DI
的值来调用未定义的行为,这是不确定的。
通过传递指向结构的指针来调用函数来存储数据,然后存储在那里。
typedef struct
{
char Path[100];
} DirectoryInformation;
void Getskelutofdirectorie(DirectoryInformation * DI, char * dir, int lvl)
{
char cwd[100]; // cwd was too long, so there was risk of buffer overrun when copying
//Search recursive
//where i want to put the path on the struct to use on main
getcwd(cwd, sizeof(cwd));
strcpy(DI[0].Path, cwd);
}
int main(void)
{
DirectoryInformation DI[100] = {{""}}; // initialize for in case the function fails to set values
Getskelutofdirectorie(DI, NULL, 0); // pass proper parameter
printf("%s", DI[0].Path);
}