qsort, tablica string'ów,naruszenie ochrony pamięci

0

Witam, mam następujący problem. Chciałbym posorotować tablicę stringów funkcją qsort, no i wszystko jest ok, tylko po zadziałaniu tą funkcją przy próbie printf'a dostaje informacje o naruszeniu ochrony pamięci. Siedzę i siedzę i dalej nie wiem co jest grane. Z góry dziękuję za odpowiedź.

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int cmp(const void *,const void *);


int main(void){
	int i;
	char **wsk = (char **) malloc(5*sizeof(char*));
	if(!wsk) exit(EXIT_FAILURE);
	for(i=0;i<5;i++){
		wsk[i]=(char *) malloc(40*sizeof(char));
		if(!wsk[i]) exit(EXIT_FAILURE);
	}
	FILE *fp = fopen("quickstring.txt","r");
	if(!fp) exit(EXIT_FAILURE);
	for(i=0;i<5;++i){
		fscanf(fp,"%[^\n]%*1[\n]", wsk[i]);
	}
	for(i=0;i<5;++i){
		printf("%s\n",wsk[i]);
	}
	qsort(wsk,5,(40*sizeof(char)),cmp);

	for(i=0;i<5;++i)
		printf("%s\n",wsk[i]);


	fclose(fp);
        for(i=0;i<5;++i)
                free(wsk[i]);
        free(wsk);
        return 0;

}

int cmp(const void *a, const void *b){
	return strcmp((char*)a,(char*)b);
}

dodanie znacznika <code class="c"> - fp

1
int cmp(const void *a, const void *b){
        return strcmp(*(const char**)a,*(const char**)b);
}
0

Działa, ale dodatkowo trzeba było jeszcze zmienić drugi argument qsorta z 40sizeof(char) na sizeof(char). Dzięki za pomoc !

1 użytkowników online, w tym zalogowanych: 0, gości: 1