오름차순으로 이름별로 레코드를 정렬하도록 내 레코드를 정렬하려고합니다. 이름이 같은 이름이있는 경우, 그것은 예를 들어 순서C - Qsort : 오름차순으로 이름 정렬 및 내림차순으로 등급 지정
내림차순으로 자신의 성적을 정렬합니다 : 원래 TEXTFILE을
simpson bart 25
simpson bart 35
simpson lisa 90
simpson bart 34
원하는 출력 :
simpson bart 35
simpson bart 34
simpson bart 25
simpson lisa 90
이 내가 가진 것입니다 :
int sort_nameasc_gradedes(const void *p, const void *q)
{
const record *pp = p;
const record *qq = q;
int n1 = strcmp(pp->name.first, qq->name.first);
int n2 = strcmp(pp->name.last, qq->name.last);
if (n2 == 0 && n1 != 0) {
return n1;
} else if (n2 != 0 && n1 == 0) {
return n2;
} else {
return (pp->score - qq->score);
}
}
이것은 제대로 작동하지 않습니다.
미리 감사드립니다.
을하지만, 여기에 문제가있을 가능성이있는 동안 당신의 설명은 당신이 '사용하지 말아야합니다 일반적으로 약 2 – woolstar
을 이야기 :
는 다음과 같은뭔가 작동 할 수 반환 값 (pp-> score - qq-> score);'값이 오버플로를 일으킬 정도로 크면 정의되지 않은 동작을합니다. –