gpt4 book ai didi

C 编程字符串的 qsort - 崩溃,没有编译器错误

转载 作者:行者123 更新时间:2023-11-30 17:37:52 25 4
gpt4 key购买 nike

首先,我从 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*。所以你的比较函数应该只有:

strcmp((const char *) a, (const char *) b);

关于C 编程字符串的 qsort - 崩溃,没有编译器错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22269712/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com