İki dizi alıp bunların anagram olup olmadığını bulan fonksiyon

Arkadaşlar saatlerdir şu saçmalıkla uğraşıyorum. Bir türlü bulamadım hatanın nerede olduğunu. Yardımcı olabilir misiniz? Özellikle kütüphane kullanmadım yazarken antrenman olsun diye.

Function
int isanagram(char const* a, char const* b) {
    int lenghta,lenghtb;

     for(int i=0; a[i]!='\0'; i++)   // get lenght a
         lenghta = i+1;

     for(int i=0; b[i]!='\0'; i++)   /// get lenght b
         lenghtb = i+1;   

     if(lenghta != lenghtb)
         return FALSE;

    char arr1[lenghta], arr2[lenghtb];

    for(int i=0; i<lenghta-1; i++)
        for(int j=i+1; ja[j])
            {
                arr1[i] = a[j];
                arr1[j] = a[i];
            }
            else
            {
                arr1[i] = a[i];
                arr1[j] = a[j];
            }
                


             if(b[i]>b[j])
            {
                arr1[i] = b[j];
                arr1[j] = b[i];
            }
            else
            {
                arr2[i] = b[i];
                arr2[j] = b[j];
            }
                
        }
        arr1[lenghta-1] = '\0';
        arr2[lenghta-1] = '\0';;
    for (int i = 0; i < lenghta-1; i++)
    {
        if(arr1[i] != arr2[i])
            return FALSE;
          
    }
    return TRUE;
}

Fonksiyon iki diziyi alır ve onların anagram olup olmadığını bulur. Önce dizi uzunluklarının eşit olup olmadığına bakar. Eğer eşitse iki diziyi de harf sırasına göre sıralayıp geçici bir diziye atar. Eğer bu geçici diziler eşitse TRUE, değilse FALSE döndürür.
Not: TRUE ve FALSE makrolarını yukarıda tanımladım.
Düzenleme 1: Sorunu buldum, dizideki sürekli en küçük eleman bulunup kopya diziye aktarılıyor.
yani dizi [9,8,7,6,5,4,3,2,1] şeklindeyse [1,1,1,1,1,1,1,1,1] oluyor.

Sorun çözülmüştür:

 Function 1  int lenght(char const* array) {
    int len = 1;
    for(int i=0; array[i]!='\0'; array++) { 
        len++;
    }
    return len;
} 
Function 2  int is_anagram(char const* arr1, char const* arr2) 
{
    int arr1_len = lenght(arr1);
    int arr2_len = lenght(arr2);

    if(arr1_len != arr2_len)
        return FALSE;
    
    char carr1[arr1_len];
    char carr2[arr2_len];

    for(int i=0; i<arr1_len; i++) 
    {
        carr1[i] = arr1[i];
        carr2[i] = arr2[i];
    }

    int j;
    char temp;

    for(int i=0; i<arr1_len-2; i++)    //sorting algorithm
    {
        j = i;
        for(; j carr1[j]) {
                temp = carr1[i];
                carr1[i] = carr1[j];
                carr1[j] = temp;
            }
            
            if(carr2[i] > carr2[j]) {
                temp = carr2[i];
                carr2[i] = carr2[j];
                carr2[j] = temp;
            }
            
        }
    }
    
    for(int i=0; i<arr1_len; i++) {
        if(carr1[i] != carr2[i])
            return FALSE;
    }

    return TRUE;

}