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

How to reorder places in char array

我对此有疑问lines[k] = lines[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;
    }

谁能帮我解决这个问题?我只想交换数组中的行 [k] 和行 [k+1]...

你不能给数组赋值,你需要strcpy()

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

因为lines[k]是一个数组,不能赋值但是可以把lines[k]的内容复制到一个临时缓冲区,然后把lines[1 + k]的内容复制到lines[k]最后把tmp的内容复制到lines[1 + k].