Örn: input: char * str1 = "hepsi iyi"; char * str2 = "kimdir"; çıkış: verilen iki dizede ortak sözcükler, dizelerin 2B dizisini döndürür.İki dizeye verildiğinde, her iki dizede de ortak olan sözcükleri bulun.
#define SIZE 31
char ** commonWords(char *str1, char *str2) {
int i,j=0,count1,count2,k=0,a,b,m=0,n;
char str3[100][100], str4[100][100];
char **output;
output = (char **)malloc(SIZE*sizeof(char*));
if (str1 == NULL || str2 == NULL)
{
return NULL;
}
for (i = 0; str1[i] != '\0'; i++)
{
if (str1[i] != ' ')
{
str3[j][k++] = str1[i];
}
else
{
str3[j][k++] = '\0';
j++;
k = 0;
}
}
str3[j][k++] = '\0';
count1 = j > 0 ? j + 1 : j;
j = k = 0;
for (i = 0; str2[i] != '\0'; i++)
{
if (str2[i] != ' ')
{
str4[j][k++] = str2[i];
}
else
{
str4[j][k++] = '\0';
j++;
k = 0;
}
}
str4[j][k++] = '\0';
count2 = j > 0 ? j + 1 : j;
for (i = 0; i < count1; i++)
{
for (j = 0; j < count2; j++)
{
if (str3[i][k] == str4[j][k])
{
if (str3[i][k + 1] == str4[j][k + 1] && str3[i][k + 2] == str4[j][k + 2] == '\0')
{
a = i;
b = k;
while (str3[a][b] != '\0')
{
output = (char **)malloc(SIZE*sizeof(char));
output[m][n] = str3[a][b];
n++;
b++;
}
output[m][n] = '\0';
}
else if (str3[i][k + 1] == str4[j][k + 1] && str3[i][k + 2] == str4[j][k + 2])
{
a = i;
b = k;
while (str3[a][b] != '\0')
{
output = (char **)malloc(SIZE*sizeof(char));
output[m][n] = str3[a][b];
n++;
b++;
}
output[m][n] = '\0';
m++;
}
}
}
}
return output;
}
Görsel stüdyolarda bu kod hata ayıklama ve test bu gösteren failed.Its "iletisi: Özel durum kodu: c0000005" .Bu nerde hata yaptım nerede bellek alanı allocation.So ilgili hata demektir?
Welcome kontrol edin! [Lütfen malloc() 've ailesinin dönüş değerini C cinsinden vermemek için bu tartışmaya bakınız.] (Http://stackoverflow.com/q/605845/2173917). –
Ve en okunabilir kodun ödülü ... hayır, size üzgün değil. – ckruczek
Bu satırı kontrol edin 'çıktı = (char **) malloc (SIZE * sizeof (char)); ' –