删除文件夹及其内容:<c>上的分段错误

时间:2015-10-05 08:20:41

标签: c segmentation-fault delete-file directory

我对此有些麻烦。 我想删除文件夹和他的内容,我尝试了这个,但我得到了分段错误:11我不知道为什么,希望你能帮助我

int path_directory (char  *path) {
    struct stat s_buf;

    if (stat(path, &s_buf))
        return 0;

    return S_ISDIR(s_buf.st_mode);
}

void Cmd_delt (char* path[]) {
    DIR*            dp;
    struct dirent*  ep;
    char            *p_buf[2048] = {0};

    dp = opendir(path[0]);
    while ((ep = readdir(dp)) != NULL) {
        sprintf(*p_buf,"%s/%s", path[0], ep->d_name);
        if (path_directory(*p_buf))
        {
            Cmd_delt(p_buf);

        }

        else
            unlink(*p_buf);

    }

    closedir(dp);
    remove(path[0]);
}

1 个答案:

答案 0 :(得分:1)

您不希望有一组指向char的指针来存储sprintf的结果,您需要一个字符串空间(char&#39}的数组。 s就够了):

char *p_buf[2048] = {0};

应该是

char p_buf[2048] = {0};

    sprintf(*p_buf,"%s/%s", path[0], ep->d_name);

应该是

    sprintf(p_buf,"%s/%s", path[0], ep->d_name);

相同
void Cmd_delt (char* path[]) {

你的path应该是一个字符串(不是一个字符串数组)

更改为:

void Cmd_delt (char *path) {

并使用path代替path[0]