Оставить только два пробела в строке, если число пробелов больше 3 - C (СИ)
Формулировка задачи:
Добрый вечер. В универе начали недавно изучать СИ. У меня возникли трудности с заданием. Пользователь вводит строку. Суть задания заключается в том, чтобы оставить только два пробела, если число последовательно введенных пробелов превышает цифру(или равно) 3. Если их число меньше 3 , то ничего не делать.
Например:
input:
hello___world__hello_p
output:
hello__world__hello_p
Можете дать какую нибудь идею для реализации или псевдокод
Решение задачи: «Оставить только два пробела в строке, если число пробелов больше 3»
textual
Листинг программы
#include <stdio.h> char* del_ch(char* s, char c, int n){ int i; char* p = s, *t = s; while((*p = *s) != '\0'){ if(*s == c){ i = 1; do { if(i++ < n) ++p; ++s; } while(((*p = *s) != '\0') && (*s == c)); continue; } else ++p; ++s; } return t; } int main(void) { char s1[] = "_hello___world__hello_p<br>end_____"; char s2[] = " hello, world fin"; puts(s1); puts( del_ch(s1, '_', 3) ); putchar('\n'); puts(s2); puts( del_ch(s2, ' ', 3) ); return 0; }
Объяснение кода листинга программы
- В функции
del_ch
первым делом инициализируются две переменные: указательp
на первый символ строкиs
и указательt
на начало строкиs
. - В цикле
while
происходит сравнение каждого символа строкиs
с символомc
. Если символы совпадают, то выполняется блок кода, который удаляет все символыc
до тех пор, пока не будет найдет символ, не равныйc
, или пока не будет найдено нужное количество символовc
. - В основной функции
main
сначала выводится исходная строкаs1
, затем строка, полученная после удаления лишних пробелов_hello___world__hello_p______end_____» с помощью функции
del_ch, и в конце выводится символ новой строки
\n`. - Затем выводится исходная строка
s2
, затем строка, полученная после удаления лишних пробеловhello, world fin
с помощью функцииdel_ch
, и в конце выводится символ новой строки\n
. - Функция
del_ch
возвращает указатель на начало строкиs
(т.е. на первый символ).
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д