私はqsort
cで関数を使用しています。組み込み関数です...長さが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;
}
...理由は何ですか?