Надеюсь, я коротко и ясно понял, что я пытаюсь сделать ниже.Застрял! .. сочетание ошибки сегментации, qsort_r, массивы, указатели
Код довольно сложный для вопроса SOF, и я не думал, что смогу сделать его более простым, сохраняя его непосредственно под контролем других.
поэтому я вырезал соответствующие детали и поместил их здесь.
Почему я получаю эту ошибку и могу ли вы помочь мне исправить ее?
любая помощь приветствуется!
спасибо.
char words[100][WORD_LENGTH];
char temp[WORD_LENGTH];
// scan the next %s from stream and put it to temp
while(fscanf(file, "%s", temp) > 0){
// printf("reducer reads: %s\n", temp);
strcpy(words[arr_i], temp);
printf("%d -- %s\n", arr_i, words[arr_i]);
arr_i++;
}
Во второй строке я получаю ошибку ошибки сегментации. (И, возможно, утечка с Valgrind)
int thunk = WORD_LENGTH;
qsort_r(&words, sizeof(words)/sizeof(words[0]), sizeof(words[0]), cmpstringp, &thunk);
от "человека QSort":
static int cmpstringp(const void *p1, const void *p2) {
/* The actual arguments to this function are "pointers to
pointers to char", but strcmp(3) arguments are "pointers
to char", hence the following cast plus dereference */
return strcmp(* (char * const *) p1, * (char * const *) p2);
}
Каково определение 'WORD_LENGTH'? –
@StefanoSanfilippo #define WORD_LENGTH 255 – mmswe
Вы проверили свой массив слов для допустимых строк (длина, нуль-окончание)? –