Напечатать заданный текст, удалив из него лишние пробелы - C (СИ)
Формулировка задачи:
Ребят,я начинающая программистка) помогите решить задачу на С
Напечатать заданный текст, удалив из него лишние пробелы, т.е. из нескольких подряд идущих пробелов оставить только один.
Решение задачи: «Напечатать заданный текст, удалив из него лишние пробелы»
textual
Листинг программы
#include <stdio.h> char* func(char* str) { char* p; unsigned i = 0; for (p = str; *p; ++p) { if ((*p == ' ') && (*(p + 1) == ' ')) { i++; } else { *(p - i) = *p; } } *(p - i) = 0; return str; } int main() { char text[] = "This is test text"; printf("%s\n", func(text)); return 0; }
Объяснение кода листинга программы
- Подключение стандартной библиотеки ввода-вывода
- Создание функции
func
, которая принимает указатель на строку в качестве аргумента и возвращает указатель на измененную копию строки - Внутри функции объявление указателя на символ
p
и переменнуюi
типаunsigned
- Использование цикла
for
для прохода по каждому символу строки, начиная с первого символаp
- Внутри цикла проверка условия: если текущий символ
p
равен пробелу и следующий символ*(p + 1)
также равен пробелу, то увеличивается счетчикi
- Если текущий символ
p
не равен пробелу или следующий символ*(p + 1)
не равен пробелу, то значениеp
присваивается*(p - i)
- После завершения цикла, последний символ
p
присваивается нулевому значению, что приводит к завершению строки - Функция возвращает измененный указатель на строку
str
- В функции
main
создается массив символовtext
с заданным текстом - Вызов функции
func
с аргументомtext
и вывод результата на экран с помощью функцииprintf
- Возврат 0 из функции
main
, что означает успешное завершение программы
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д