C에서 qsort를 구현하고 역 사전 식 순서로 정렬해야합니다. 비교 함수를 만들고 호출하는 방법에 대해 혼란스러워합니다. 이C에서 qsort를 구현하는 방법
qsort (strArr, numLines, sizeof(char*) , sort);
int sort(const void * str1, const void * str2) {
return (-1) * strcasecmp((char*) str1, (char*) str2);
};
이클립스 나를 말하는 qsort가 줄에 " '일종의'선언되지 않은 (이 기능에서 처음 사용)"입니다 .. 내가 지금까지 가지고있는,하지만 난 그게 내 유일한 문제는 아니다 우려하고있다. 어떤 충고?
char **strArr = malloc(numLines * sizeof(char*));
fgets(output, 256, sourceFile);
strArr[i] = malloc(((int) strlen(output) + 1) * sizeof(char));
strcpy(strArr[i],output);
순서를 반대로하려면 비교를 사용하지 마십시오. 그냥'str1'과'str2'를'strcasecmp' 호출에서 바꿔 치기 만하면됩니다. (관련 주제에 관해서는 -1로 곱셈을하는 것은 내 것이고, 어떤 것이 든 상관이 없습니다.) –
다른 말로 : 최상 :'strcasecmp (str2, str1)'. 좋아요 :'-strcasecmp (str1, str2)'. Lousy :'-1 * strcasecmp (str1, str2)'. –
하하 ... 충고에 감사드립니다. 나는 여전히 학생이며 배우면서 배우고 있습니다. 나는 그것을 명심해야한다 :) – Hristo