Когда вы удаляете один символ (скажем, с индексом = 5) по этому индексу, теперь соответствует символу, который был при индексе = 6;но вы увеличиваете цикл for до index = 6, поэтому вы пропускаете новый символ с индексом = 5.
Вам лучше скопировать в новую строку действительные символы, это проще.
Или вы можете попробовать
void removechar( char str[], char t )
{
int i,j;
i = 0;
while(i<strlen(str))
{
if (str[i]==t)
{
for (j=i; j<strlen(str); j++)
str[j]=str[j+1];
} else i++;
}
}