繁体   English   中英

二维字符串指针

[英]Two-dimensional string pointer

在调试这个程序的过程中,我发现二维对象后面不能加NULL。

void list_dir(char **dirp_array)
{
    char *dir_name = "./";
    DIR *dp;
    struct dirent *dirp;

    if ((dp = opendir((const char *)dir_name)) == NULL){
        perr_exit("opendir errno");
    }

    while((dirp = readdir(dp)) != NULL){
        (* dirp_array) = strdup((char *)dirp->d_name);
        printf("%s\n",(* dirp_array));
        dirp_array ++;
        //dirp_array += strlen(*dirp_array);
    }
    *dirp_array = NULL;
    closedir(dp);
}

修改后,我想得到我定义的二维。 所以,我在这里定义了一个函数。

void chack_array(char **array)
{
    while(array != NULL){
        printf("%s\n",(* array));
        array ++;
    }
}

main(){
    char *dirp_array[256];
    list_dir(dirp_array);
    chack_array(dirp_array);
}

但我核心转储

这一行:

dirp_array = NULL;

应该

*dirp_array = NULL;

您的第一个版本不会更改调用者提供的数组内容。 它只是说dirp_array指针现在是NULL ,即不指向任何数组。 您想将NULL存储到调用者数组中的元素,并且您通过上面的第二个版本来实现,取消引用指针。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM