Я пытаюсь сортировать массив 2d. Сначала я сортирую его по столбцу, а затем по строкам. Столбец по столбцу работает, но строка за строкой нет. Что не так в этом коде?Сортировка 2D-массива с qsort
int scmpr (const void *a, const void *b){
return strcmp((const char*)a, (const char*)b);
}
int main(void){
int i,j;
char **tab;
tab=(char**)malloc(sizeof(char*)* 10);
for(i=0; i<10; i++){
tab[i]=(char*)malloc(sizeof(char)*15);
}
for(i=0; i<10; i++){
for(j=0; j<15; j++){
tab[i][j]=rand()%20+'b';
printf("%c ", tab[i][j]);
}
puts("");
}
for (i = 0; i<10; i++){
qsort(&tab[i][0], 15, sizeof(char), scmpr);
}
qsort(tab, 10, sizeof(char), scmpr); //<-- doesn't work
for(i=0; i<10; i++){
for(j=0; j<15; j++){
printf("%c ", tab[i][j]);
}
puts("");
}
puts("");
return 0;
}
остановки литье в 'malloc' Это не C++. – Malina
Каждая строка сортируется здесь: http://ideone.com/IhUAFV – PaulMcKenzie
@ Krasnal Прежде всего строки в массиве не завершены нулем и этот вызов qsort (& tab [i] [0], 15, sizeof (char) , scmpr); не имеет смысла. –