如何在c中生成数组的子集?
我试图在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);
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 functionm()
接受指针和大小,您可以通过调用m(p+x,size-x)
之类的东西在子集上调用它。您所说的“从ARGV中的stdin获取的输入”是什么意思?可以从stdin输入,也可以从ARGV输入,也可以从名为命令行参数的文件中输入…1)我需要能够根据子阵列对原始阵列重新排序,这样我就不能在适当的位置重新排序2)我得到一个seg故障3)与#1 4)命令行参数存储在c中main中的阵列ARGV中相同