Umlaute in C zulassen?

Hallo, ich schreibe gerade an einem Programm in dem ich Palindrome(Wörter bzw. Sätze, die von vorne und von hinten gelesen das selbe ergeben zB. Lagerregal, etc.) herausfinden soll. In der Programmiersprache C. Hier ist die Funktion, in der ich den String in Kleinbuchstaben umwandle:

void small(char str[]);

void small(char str[])

{

   int i = 0;

   int len = 0;

   int j = 0;

   char sho[200] = {};

   len = strlen(str);

   //printf("0");

   while(str[i] != '\0')

   {

       // printf("01");

       if(((str[i] < 91) && (str[i] > 64)) || (str[i]== 'ä')||(str[i]== 'ö') || (str[i]== 'ü')|| (str[i]== 'ß')) //ob str[i] großbuchstabe ist

       {

           //       printf("2");

           str[i] = str[i] + 32;

       }

       i++;

   }//puts(str);

   i = 0;

   while(str[i] != '\0')

   {

//       printf("1");

       if (((str[i] > 96) && (str[i] < 123))|| (str[i]== 'ä')||(str[i]== 'ö') || (str[i]== 'ü')|| (str[i]== 'ß')) //ob str[i] buchstabe ist

       {

           sho[j] = str[i];

           j++;

       }

       i++;

   }

   puts(sho);

   strcpy(str, sho);

   //puts(str);

}

Mein Problem ist, dass, wenn ich zB Säas eingebe es als Palindrom gewertet wird, weil es das ä nicht zählt. Ich weiß, dass der Rest meines Programmes funktioniert.

Ich hoffe ihr könnt mir da weiterhelfen.

Mit freundlichen Grüßen,

Hallo

Funktion, Programmiersprache