
C - qsort retazca
Najskor mam nejaky subor znakov tie vytriedim iba na jednociferne cisla a hodim do retazca. Ten retazec z cislami chcem vytriedit pomocou qsort ale nejde mi to neviem preco vsetko mam ako by malo byt
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "Retazce.h"
int main()
{
const int POCET=10;
char *znaky=(char *)malloc(POCET*sizeof(char));
char *cifry=(char *)malloc(POCET*sizeof(char));
char *hladaneZnaky="0123456789";
char *nasiel;
char znak;
int pocetPrvkov=-1;
int kolkoKratAlokoval=1;
FILE *fr;
if((fr=fopen("zdroj.txt","r"))==NULL)
{
printf("Subor zdroj.txt neexistuje!\n");
return 1;
}
while(fscanf(fr,"%c",&znak)!=EOF)
{
++pocetPrvkov;
if(pocetPrvkov%POCET==POCET-1)
{
++kolkoKratAlokoval;
znaky=(char *)realloc(znaky,POCET*kolkoKratAlokoval*sizeof(cha r));
}
znaky[pocetPrvkov]=znak;
}
printf("%s\n\n",znaky);
pocetPrvkov=0;
kolkoKratAlokoval=1;
nasiel=strpbrk(znaky,hladaneZnaky);
while(nasiel!=NULL)
{
if(pocetPrvkov%POCET==POCET-1)
{
kolkoKratAlokoval++;
cifry=(char *)realloc(cifry,POCET*kolkoKratAlokoval*sizeof(cha r));
}
cifry[pocetPrvkov++]=*nasiel;
nasiel=strpbrk(++nasiel,hladaneZnaky);
}
cifry[pocetPrvkov]='\0';
printf("%s\n\n",cifry);
pocetPrvkov++;
qsort(cifry,pocetPrvkov,sizeof(char*),comp);
printf("%s\n",cifry);
free(znaky);
fclose(fr);
return 0;
}
int comp(const void *a,const void *b)
{
return strcmp(*(char **)a,*(char **)b);
}
Dakujem za rady idem sa do toho pustit :)
OOP class nemusis robit :) Zbytok mozes ak sa ti chce :)
A funguje teda uz ten qsort? Ja som to pisal zhlavy, ja tie veci co sem pisem netestujem :)
MM.. zivis sa kodenim ? kde alebo ako si sa naucil dobre kodit :) ď za odpoved