C 如何重新排列字符数组中的位置

C 如何重新排列字符数组中的位置,c,string,multidimensional-array,swap,C,String,Multidimensional Array,Swap,我对这个行[k]=行[k+1]有问题 以下是我尝试做的: char lines[MAXLINES][BUFSIZ]; for(k = 0;k < i;k++){ char * tmp = lines[k]; lines[k] = lines[k+1]; lines[k+1] = tmp; change = 1; } 字符行[MAXLINES][BUFSIZ]; 对于(k=0;k

我对这个
行[k]=行[k+1]有问题

以下是我尝试做的:

char lines[MAXLINES][BUFSIZ];    
   for(k = 0;k < i;k++){
      char * tmp = lines[k];
      lines[k] = lines[k+1];
      lines[k+1] = tmp;
      change = 1;
    }
字符行[MAXLINES][BUFSIZ];
对于(k=0;k

有人能帮我吗?我只想将[k]行与数组中的[k+1]行交换…

您不能分配给数组,您需要
strcpy()

字符行[MAXLINES][BUFSIZ]
对于(int k=0;k

由于
行[k]
是一个数组,您不能分配给它,但您可以将
行[k]
的内容复制到临时缓冲区,然后将
行[1+k]
的内容复制到
行[k]
中,最后将
tmp
的内容复制到
行[1+k]
中,您不能分配给数组,您需要
strcpy()

字符行[MAXLINES][BUFSIZ]
对于(int k=0;k

由于
行[k]
是一个数组,您不能分配给它,但您可以将
行[k]
的内容复制到临时缓冲区,然后将
行[1+k]
的内容复制到
行[k]
中,最后将
tmp
的内容复制到
行[1+k]
中,您不能分配给数组,您需要
strcpy()

字符行[MAXLINES][BUFSIZ]
对于(int k=0;k

由于
行[k]
是一个数组,您不能分配给它,但您可以将
行[k]
的内容复制到临时缓冲区,然后将
行[1+k]
的内容复制到
行[k]
中,最后将
tmp
的内容复制到
行[1+k]
中,您不能分配给数组,您需要
strcpy()

字符行[MAXLINES][BUFSIZ]
对于(int k=0;k


由于
行[k]
是一个数组,您不能分配给它,但您可以将
行[k]
的内容复制到一个临时缓冲区,然后将
行[1+k]
的内容复制到
行[k]
中,最后将
tmp
的内容复制到
行[1+k]

中是否确实要将
复制到
中(k=0;k
和不
用于(k=0;k
?您确定要
用于(k=0;k
而不是
用于(k=0;k
?您确定要
用于(k=0;k而不是
用于(k=0;k吗?您确定要
用于(k=0;k++>{
而不是
(k=0;k
?啊哈,谢谢你的解释,,,我是C新手,所以数组有点让人困惑。虽然使用非连续内存(指向数组的指针数组)可能更适合这里,因为这样可以避免复制。@DanielJour完全正确,但如果您没有经验,动态分配可能会很棘手。他建议您使用一个索引数组,该数组包含指向原始数组中的行的指针,并通过这些行执行所有访问。内存占用与@DanielJour的方法相同,但没有d动态内存。啊哈,谢谢你的解释,,,我是C新手,所以数组有点让人困惑。虽然使用非连续内存(指向数组的指针数组)可能更适合这里,因为这样可以避免复制。@DanielJour完全正确,但如果您没有经验,动态分配可能会很棘手。他建议您使用一个索引数组,该数组包含指向原始数组中的行的指针,并通过这些行执行所有访问。内存占用与@DanielJour的方法相同,但没有d动态内存。啊哈,谢谢你的解释,,,我是C新手,所以数组有点让人困惑。虽然使用非连续内存(指向数组的指针数组)可能更适合这里,因为这样可以避免复制。@DanielJour完全正确,但如果您没有经验,动态分配可能会很棘手。他建议您使用一个索引数组,该数组包含指向原始数组中的行的指针,并通过这些行执行所有访问。内存占用与@DanielJour的方法相同,但没有d动态内存。啊哈,谢谢你的解释,,,我是C新手,所以数组有点让人困惑。虽然使用非连续内存(指向数组的指针数组)可能更适合这里,因为这样可以避免复制。@DanielJour完全正确,但如果您没有经验,动态分配可能会很棘手。他建议您使用一个索引数组,该数组包含指向原始数组中的行的指针,并通过这些行执行所有访问。内存占用与@DanielJour的方法相同,但没有d动态记忆。
char lines[MAXLINES][BUFSIZ]

for (int k = 0 ; k < i ; ++k)
 {
    char tmp[BUFSIZ];
    strcpy(tmp, lines[k]);
    strcpy(lines[k], lines[k + 1]);
    strcpy(lines[k + 1], tmp);
    change = 1;
 }