【发布时间】:2013-03-23 05:22:22
【问题描述】:
下面的代码是对集合中的每个字符串进行排序(对其字符进行排序),然后对集合中的所有字符串进行排序。但它给了我分段错误..
#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;
}
【问题讨论】:
-
如果您想使用 C++,请使用 C++ 库,例如
std::string和std::sort。 C 和 C++ 是两种截然不同的语言。 -
或者至少使用动态数据结构,只要不尝试写入只读内存,就不会出现分段错误(大多数情况下)。
标签: c++ c comparator qsort