Напечатать заданный текст, удалив из него лишние пробелы - 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;
}

Объяснение кода листинга программы

  1. Подключение стандартной библиотеки ввода-вывода
  2. Создание функции func, которая принимает указатель на строку в качестве аргумента и возвращает указатель на измененную копию строки
  3. Внутри функции объявление указателя на символ p и переменную i типа unsigned
  4. Использование цикла for для прохода по каждому символу строки, начиная с первого символа p
  5. Внутри цикла проверка условия: если текущий символ p равен пробелу и следующий символ *(p + 1) также равен пробелу, то увеличивается счетчик i
  6. Если текущий символ p не равен пробелу или следующий символ *(p + 1) не равен пробелу, то значение p присваивается *(p - i)
  7. После завершения цикла, последний символ p присваивается нулевому значению, что приводит к завершению строки
  8. Функция возвращает измененный указатель на строку str
  9. В функции main создается массив символов text с заданным текстом
  10. Вызов функции func с аргументом text и вывод результата на экран с помощью функции printf
  11. Возврат 0 из функции main, что означает успешное завершение программы

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 3.692 из 5
Похожие ответы