c - 在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;
我搜索了其他帖子,但仍然不知道为什么。如何解决这个问题呢?
解决方案
C 禁止在不指定两个索引的情况下分配二维数组。你必须写一些像
buffer[a][b] = buffer[c][d]
无论您的 a、b、c、d 是什么。
还要确保您的缓冲区临时被填充和/或分配。
推荐阅读
- javascript - 没有立即收到道具
- java - 如何在方法中返回 arrayList 元素?
- sql - db2 sql查询显示给定时间戳之间每小时的计数
- gradle - Sentry log4j2 的 build.gradle 应该包含什么?
- snowflake-cloud-data-platform - 当只有 1 个实例时,雪花 XML 解析不适用于嵌套结构
- r - 对数据框列表进行数字排序
- python - Python中有没有办法根据由语音到文本创建的短文本主题进行段落分割?
- ios - 我有一个 Trimming Video Editor 但在 Xcode 11 之后我收到此错误 No such module 'ABVideoRangeSlider'
- python - 如何删除熊猫数据框中的“镜像复制”行?
- c++ - 带有可变参数模板的表达式模板运算符