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