如何在c中生成数组的子集?

如何在c中生成数组的子集?,c,C,我试图在C中实现一个递归合并排序,它将从ARGV中的stdin获取的输入排序。为此,我需要创建新数组,这些数组是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);

我试图在C中实现一个递归合并排序,它将从
ARGV
中的stdin获取的输入排序。为此,我需要创建新数组,这些数组是
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);
    }
}
void pm\u merge(字符**A、int p、int q、int r)
{
字符**L;
字符**R;
int i;
L=malloc(sizeof(char*)*pm_stringlen(A)+1);
i=0;

while(我为什么不简单地为您的子集使用索引?一个索引用于开始,一个索引用于结束。或者可能是一个开始索引和一个长度。您的问题是什么?代码是否编译,它是否做了正确的事情?另请参阅:If you have a function
m()
接受指针和大小,您可以通过调用
m(p+x,size-x)
之类的东西在子集上调用它。您所说的“从ARGV中的stdin获取的输入”是什么意思?可以从stdin输入,也可以从ARGV输入,也可以从名为命令行参数的文件中输入…1)我需要能够根据子阵列对原始阵列重新排序,这样我就不能在适当的位置重新排序2)我得到一个seg故障3)与#1 4)命令行参数存储在c中main中的阵列ARGV中相同