【发布时间】:2012-11-20 02:50:52
【问题描述】:
我在 c 中使用 qsort 函数..它是一个内置函数...它适用于长度小于 7 的字符串..在长度 > 7 的字符串上,它给出“分段错误(核心转储) "
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define MAX 100
static int cmpr( const void *a, const void *b) {
return strcmp( *(char **)a, *(char **)b);
}
int main()
{
int t;
char str1[MAX],str2[MAX];
scanf("%d",&t);
while(t--)
{
scanf("%s %s",str1,str2);
int len1=strlen(str1)/sizeof(char *);
int len2=strlen(str2)/sizeof(char *);
qsort(str1, len1, sizeof(char *), cmpr);
qsort(str2, len2, sizeof(char *), cmpr);
if((strstr(str1,str2)!=NULL)&& (strlen(str1)==strlen(str2)))
printf("YES");
else if((strstr(str2,str1)!=NULL) && (strlen(str1)==strlen(str2)))
printf("YES");
else if((strstr(str2,str1)!=NULL) && (strlen(str1)!=strlen(str2)))
printf("NO");
else if((strstr(str1,str2)!=NULL) && (strlen(str1)!=strlen(str2)))
printf("NO");
else
printf("YES");
}
return 0;
}
...知道为什么吗?
【问题讨论】:
-
您应该使用所有警告和调试信息进行编译,并使用调试器。在 Linux 上,使用
gcc -Wall -g编译(改进代码直到没有给出警告)并使用gdb进行调试。你的程序错了,因为str1应该是一个指针数组...... -
您是否尝试使用调试器来查看哪一行导致崩溃?
-
你想在这里排序什么?
-
我正在尝试对字符串中的字符进行排序
-
qsort 是 c 中的内置函数
标签: c segmentation-fault qsort