2013-04-02 1 views
0

다음 코드는 세트의 각 문자열을 정렬 (문자 정렬) 한 다음 세트의 모든 문자열을 정렬합니다. 하지만 .. 내가 잘못을 세그멘테이션각 문자열을 정렬 한 다음 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++을 사용하려면 [std :: string'] (http://en.cppreference.com/w/cpp/string/basic_string) 및 ['std :: string '과 같은 C++ 라이브러리를 사용하십시오. 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

관련 문제