首页 > 解决方案 > 如何在 c 中对数组进行子集化?

问题描述

我正在尝试在 C 中实现递归合并排序,对从标准输入中获取的输入进行排序ARGV。为此,我需要创建作为数组子集副本的新ARGV数组。我需要副本,因为然后我将使用它们来修改原始数组,而我无法做到这一点。

void pm_merge(char **A, int p, int q, int r)
{
    char **L;
    char **R; 
    int i;

    L = malloc(sizeof(char*) * pm_stringlen(A) + 1);

    i = 0;
    while (i <= q)
        strncpy(L[i], A[i], pm_stringlen(A[i]));
}

void pm_mergesort(char **A, int p, int r)
{
    int q;
    if (p < r) 
    {
        q = (p + r) / 2;
        pm_mergesort(A, p, q);
        pm_mergesort(A, q + 1, r);
        pm_merge(A, p, q, r);
    }
}

我已经包含pm_mergesort()了上下文,但真正的问题在于pm_merge()函数。谁能帮我吗?尽管可以编译,但该代码给了我一个错误。

标签: c

解决方案


推荐阅读