【发布时间】:2014-03-08 13:06:56
【问题描述】:
首先,我从 txt 中提取符号并在我放置它们的位置创建字符串“znaky”。之后,我只对字符串中的数字进行排序,然后将它们带到另一个字符串“cifry”,然后我想用 qsort 对它们进行排序,但是程序出现了一些问题。谁能帮帮我??
#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(char));
}
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(char));
}
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);
}
【问题讨论】:
-
cifry 不是 char 指针数组,您告诉 qsort 是。