Ваша программа работает нормально (при условии, что вы включили string.h
) - когда она находит пробел ' '
как символ, она устанавливает индекс ith на \0
икогда в следующий раз strlen
вычисляет длину, он обнаруживает, что i<(int)strlen
(он находит завершение в ранней позиции) нарушается, и цикл завершается.
Здесь вывод GCC безлюбое предупреждение / ошибка:
str[0] = t
str[1] = h
str[2] = i
str[3] = s
str[4] =
Единственное, что он не будет печатать всю строку, так как, когда вы найдете пробел, который вы заменяете, он будет нулевым завершением, в следующий раз условие strlen
будет нарушено, и оно наступитвне цикла.
Для печати всей строки лучше использовать переменную и инициализировать ее длиной строки, а затем использовать эту переменную в качестве условия:
unsigned length = strlen(str);
for(int i = 0; i < length; i++)
Кроме того, вам не нужно вводить strlen
возвращаемое значение int
.