C++ 对每个字符串进行排序,然后使用qsort对字符串集进行排序

C++ 对每个字符串进行排序,然后使用qsort对字符串集进行排序,c++,c,comparator,qsort,C++,C,Comparator,Qsort,下面的代码是对集合中的每个字符串进行排序(对其字符进行排序),然后对集合中的所有字符串进行排序。但这给了我错误 #include<stdio.h> #include<stdlib.h> #include<string.h> int comp ( const void *a, const void *b) { return strcmp ( *(char **) a, *(char **) b ); } int compare(const void* a,

下面的代码是对集合中的每个字符串进行排序(对其字符进行排序),然后对集合中的所有字符串进行排序。但这给了我错误

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int comp ( const void *a, const void *b)
{
return strcmp ( *(char **) a, *(char **) b );
}


int compare(const void* a, const void* b)
{  return *(char*)a - *(char*)b; }
void printAnagramsTogether( char * str[], int size)
{
int i, j;
//qsort ( str, size, sizeof (str[0]), comp);
for (i=0; i<size; i++)
        qsort((void *)str[i], strlen(str[i]), sizeof (char), compare);

qsort ( str, size, sizeof (str[0]), comp);

}

int main()
{
char* wordArr[] = {"cat", "dog", "tac", "god", "act"};
int size = sizeof(wordArr) / sizeof(wordArr[0]);
printAnagramsTogether(wordArr, size);
return 0;
}
#包括
#包括
#包括
内部组件(常数无效*a,常数无效*b)
{
返回strcmp(*(字符**)a、*(字符**)b);
}
整数比较(常数无效*a,常数无效*b)
{return*(char*)a-*(char*)b;}
void printAnagramsTogether(字符*str[],整数大小)
{
int i,j;
//qsort(str,size,sizeof(str[0]),comp);
对于(i=0;i运行此

int main()
{
    char *arr[] = {"rony", "phony", "nop"};
    arr[0][0] = 1;
}

它崩溃,因为字符串是常数(我假设存储在代码段中)。< /P>如果你想使用C++,那么使用C++库,比如.c和C++是两种非常不同的语言。或者至少使用动态数据结构,只要它不试图写只读存储器,就没有分割错误(在大多数情况下)。你能解释下一票背后的原因吗?我精确地解释了你所做的--试图写入只读内存。