对指向字符串数组的指针执行 strncpy 时出现分段错误 C

Segmentation fault while performing strncpy to pointer to an array of strings C

我正在尝试将 s 的子字符串复制为指向字符串数组的指针。下面是我的代码。我已经使用 malloc 分配了内存。但是当我尝试执行 strncpy 时,出现分段错误。如果我的代码有任何问题,谁能告诉我?或者是否允许对指向字符串的指针数组进行 strncpy

s是长度为32的字符串

char **suptr = (char **)malloc(sizeof(char *) * 11);  
if(suptr != NULL)
{
strncpy(suptr[0], s, 10);
strncpy(suptr[1], s+10, 10);
strncpy(suptr[2], s+20, 10);
strncpy(suptr[3], s+30, 2);
}

提前致谢

您已经分配了一个 char 指针数组。但是,这些指针未初始化。也就是说,它们包含垃圾数据,实际上并没有指向任何有意义的地方。因此,当您尝试向它们复制数据时,您正在写入无效地址。

每个指针都需要首先指向一个有效的内存部分。实现此目的的一种简单方法是:

for (int k=0; k<11; k++) {
    suptr[k] = malloc(sizeof(char)*10); // Or whatever length you want.
    if ( !suptr[k] ) {
        // handle the error
    }
}