#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define len 25
int main()
{
int b=1; //количество слов
char t[256]= { 0 } ,
**a; //массив для сортировки слов
printf("\nЛабораторная работа №3. Дана строка слов, разделённых пробелами. Расположите в строке слова в порядке возрастания их длины.\nАвтор: студент гр.РИ-111121 Мухаметшин Н.И. 2022г.\n");
//создать массив для 1-й строки
a=(char**)malloc(b*sizeof(char*));
//создать для массива первую
//строку длиной len:
a[0]=(char*)malloc(len*sizeof(char));
printf("Введите текст:\n");
fgets(t,sizeof(t),stdin);
//изменить последний символ введённого текста с \n на \0
t[strlen(t)-1]='\0';
//выбрать первое слово в тексте
char *w=strtok(t," ");
//далее в цикле выбирать все слова и сохрянять в массив, увеличивая массив для каждого выбранного слова из текста
while(w!=NULL)
{ //while начало цикла
//обнулить ячейки места для хранения нового слова в массиве, чтобы не было мусора после слова
memset(a[b-1],'\0',len*sizeof(char));
//скопировать слово в массив
strcpy(a[b-1],w);
//увеличить массив на 1
a=(char**)realloc(a,++b*sizeof(char*));
//добавить место для новой строки в массиве
a[b-1]=(char*)malloc(len*sizeof(char));
//выбрать следующее слово из введённого текста
w=strtok(NULL," ");
} //while конец цикла
//сортировка слов в порядке возрастания их длины
for(int i = 0; i < b; i++)
for(int j = 0; j < b; j++)
{
if(i!=j && strlen(a[i])<strlen(a[j]))
{ //if начало
char t[len]= { 0 } ;
strcpy(t,a[j]);
strcpy(a[j],a[i]);
strcpy(a[i],t);
} //if кронец
}
//вывод результата сортировки слов
printf("\nСлова в порядке возрастания их длины:\n");
printf("\n");
for(int i = 0; i < b; i++)
printf("%s ",a[i]);
//освобождение памяти от строк
for(int i = 0; i < b; i++)
free(a[i]);
//освобождение памяти от массива
free(a);
return 0;
}

Не могу понять как убрать
Можете помочь пожалуйста?