将getcwd存储在函数的结构上

时间:2016-06-08 22:38:27

标签: c

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

1 个答案:

答案 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);

}