在C

时间:2018-10-08 14:47:06

标签: c

交换行以使数组按ascii升序排序的模块不断返回错误。

const int MAX = 10;
const int MAX_STR = 80;

void asciiOrder(char (*buffer)[MAX_STR]);

void asciiOrder(char (*buffer)[MAX_STR]) {

  char * temp;

  for (int i = 0; i < sizeof(buffer) / sizeof (buffer[0]) - 1; i++) {

    for (int j = 1; i + j < sizeof(buffer) / sizeof(buffer[0]); j++) {

      for (int k = 0; k < strlen(buffer[i]) && buffer[i][k] != NULL; k++) {

        if (buffer[i][k] > buffer[i+j][k]) {

          temp = buffer[i+j];
          buffer[i+j] = buffer[i];
          buffer[i] = temp;
          break;
        }
      }
    }
  }
}

这是我从整个代码中得到的错误:

practice102.c:87:23: error: assignment to expression with array type
           buffer[i+j] = buffer[i];
                       ^
practice102.c:88:21: error: assignment to expression with array type
           buffer[i] = temp;

我搜索了其他帖子,但仍然不知道为什么。 如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

C禁止在不指定两个索引的情况下分配2D数组。 你必须写类似

buffer[a][b] = buffer[c][d]

无论您的a,b,c,d是什么。

还要确保已填充和/或分配了缓冲区温度。