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;
}