Ваш подход неверен, так как вы печатаете слово до длины. Поэтому сначала вам нужно вычислить длину, затем распечатать ее, а затем напечатать слово.
Это может быть что-то вроде:
int main(void)
{
char str[20]="I Love India";
size_t i = 0;
while(str[i])
{
if (str[i] == ' ') // consider using the isspace function instead
{
// Print the space
printf(" ");
++i;
}
else
{
size_t j = i;
size_t count = 0;
// Calculate word len
while(str[j] && str[j] != ' ')
{
++count;
++j;
}
// Print word len
printf("%zu", count);
// Print word
while(i<j)
{
printf("%c", str[i]);
++i;
}
}
}
}
Основная идея состоит в том, чтобы иметь две индексные переменные для строки, i
и j
. Индекс i
- это первый символ слова, а индекс j
используется для нахождения конца слова. Как только конец слова найден, можно напечатать длину и слово.