Utilizando qsort () de stdlib para ordenar una matriz de cadenas

Alguno prefacio: soy un estudiante de ingeniería informática que toma una primera clase en C después de 3 semestres de Java (hasta estructuras de datos). Esta pregunta está relacionada con una tarea asignada, pero se han eliminado algunos pasos para resolverla por mí.

Tengo un archivo de entrada que leo en la memoria, de modo que se almacena en char [9] [500]. Leí a lo sumo 500 cadenas de longitud máxima 8. Estoy intentando ordenar esta matriz usando la función qsort () incorporada de stdlib, y tengo algunos errores de memoria.

Fragmentos de código importantes:

char data[4][500][60];
char debug[500][9];
size_t count = 0;

/* initialize file, open for reading */
FILE* pUserlog;
pUserlog = fopen("userlog","r");

while(!feof(pUserlog))
{
    fscanf(pUserlog, "%9s %8s %16s",debug[count], data[1][count], data[2][count]);
    fgets(data[3][count], 60, pUserlog);
    count++;
}

Esta sección lee los datos en las matrices. El conjunto de interés en esta parte es "depurar". Esta es la matriz especificada anteriormente. Aquí está mi función de comparación para qsort:

int compare(const void* a, const void* b)
{
    const char **ia = (const char **)a;
    const char **ib = (const char **)b;
    puts("I'm in compare!");
    return strncmp(*ia, *ib,8);
}

Este es mi intento de llamar a qsort:

size_t debug_len = sizeof(debug)/sizeof(char*);
printf("debug len: %d, count: %d, sizeof(char*): %d\n",debug_len,count,sizeof(char*));
qsort(debug,count, sizeof(char *), compare);

Intenté sustituir debug_len en mi llamada donde está el recuento, pero todavía estoy segfaulting. Aquí está la salida:

$ ./test
debug len: 1125, count: 453, sizeof(char*): 4
I'm in compare!
Segmentation fault (core dumped)

¡Gracias

Respuestas a la pregunta(2)

Su respuesta a la pregunta