【发布时间】:2021-12-26 02:36:54
【问题描述】:
我正在尝试按字母顺序对这些预先确定的字符串进行排序,但我的 strcmp 和 strcpy 说我的 const char* 被函数中使用的 char* 违反了。
这是代码;
#include <stdio.h>
#include <string.h>
#define size 10
int main(void) {
const char* cities[size] = { "Acushnet", "Dartmouth", "Fairhaven",
"Fall River", "Freetown", "Marion",
"Mattapoisett", "New Bedford", "Rochester", "Westport" };
//using values a and b to hold values
int a;
const char b;
for (int i = 0; i < size; i++) {
for (int a = i + 1; a <= size; a++) {
if (strcmp(cities[i], cities[a]) > 0) {
strcpy(b, cities[i]);
strcpy(cities[i], cities[a]);
strcpy(cities[a], b);
}
}
}
}
【问题讨论】:
-
您收到的
strcpy警告是正确的。cities是一个指向常量字符串的指针数组。将这些用作strcpy的第一个(目标)参数会尝试违反constness。另一种方法是交换指针而不是字符串值本身。
标签: c sorting swap c-strings selection-sort