이 프로그램은 정수 값을 가져 와서 입력 할 수있는 문자열의 양을 결정하고 사용자가 지정한 문자열의 양을 입력하면 다른 정수를 입력 한 다음 해당 양을 입력 할 수 있습니다 문자열. 끝나면 프로그램은 내림차순으로 길이에 따라 문자열을 정렬합니다. 그러나 qsort가 작동하지 않으면 문자열이 원래 입력 된 순서가 출력됩니다.qsort를 사용하여 문자열 배열 정렬
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int sort(const void * a, const void * b){
size_t fa = strlen((const char *)a);
size_t fb = strlen((const char *)b);
return (fa < fb) - (fa > fb);
}
int main(void){
char pointer[100];
int n;
scanf("%d", &n);
char** strings = malloc(n * sizeof(char*));
int i;
for (i = 0; i < n; i++){
scanf("%s", pointer);
strings[i] = malloc(sizeof(char) * (strlen(pointer) + 1));
strcpy(strings[i], pointer);
}
int m;
scanf("%d", &m);
strings = realloc(strings, (n + m) * sizeof(char*));
for (i = n; i < m + n; i++){
scanf("%s", pointer);
strings[i] = malloc(sizeof(char) * (strlen(pointer) + 1));
strcpy(strings[i], pointer);
}
int a;
int g;
int k = m + n;
qsort(strings , a, 100, sort);
for (g = 0; g < k; g++){
printf("%s", strings[g]);
printf("\n");
}
}
이것을 디버깅 해보았습니까? 정렬을 수행 할 때 중단 점을두면 어떤 값이 전달되고 있는지, 올바르게 처리하는지 표시됩니다. –
qsort를 올바르게 사용했는지 잘 모르겠습니다. 데이터를 읽는 중입니다. 그렇지 않으면 아무 것도 인쇄되지 않습니다. –