2013-04-02 67 views
0

下面的代碼是對集合中的每個字符串進行排序(對其字符進行排序),然後對集合中的所有字符串進行排序。但它給我段錯誤..soritng每個字符串然後使用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, 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; 
} 
+2

如果您想使用C++,請使用C++庫,如['std :: string'](http://en.cppreference.com/w/cpp/string/basic_string)和['std :: sort'](http://en.cppreference.com/w/cpp/algorithm/sort)。 C和C++是兩種截然不同的語言。 –

+0

或者至少使用動態數據結構,只要它不嘗試寫入只讀內存,沒有分段錯誤(在大多數情況下)。 – Dmitry

回答

0

運行此

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

崩潰,因爲字符串常量(我想在存儲代碼文本段)。

+1

你能解釋downvote背後的推理嗎?我完全解釋了你所做的 - 試圖寫入只讀內存。 – Dmitry

相關問題