С клавиатуры вводится латиница, не более 80 символов, вывести эти символы так, чтобы не было пробелов - C (СИ)
Формулировка задачи:
С клавиатуры вводится латиница, не более 80 символов, вывести эти символы так, чтобы не было более двух идущих подряд пробелов!Помогите пожалуйста
Решение задачи: «С клавиатуры вводится латиница, не более 80 символов, вывести эти символы так, чтобы не было пробелов»
textual
Листинг программы
#include <stdio.h>
#include <string.h>
int main(void) {
char buf[BUFSIZ];
while ( printf("String: ") && fgets(buf, BUFSIZ, stdin) && *buf != '\n' ) {
char * p = strstr(buf, " ");
while ( p ) {
p += 2;
while ( *p == ' ' )
memmove(p, p + 1, strlen(p));
p = strstr(p, " ");
}
printf("Result: %s", buf);
}
return 0;
}
Объяснение кода листинга программы
- Подключение необходимых библиотек: stdio.h и string.h
- Объявление переменной buf типа char, которая будет использоваться для хранения вводимой строки. Размер buf устанавливается в BUFSIZ.
- Запуск цикла while, который будет выполняться до тех пор, пока пользователь не введет строку, содержащую символ новой строки.
- Внутри цикла выводится приглашение для ввода строки.
- В цикле while ищется первое вхождение подстроки
(два пробела подряд). - Если такая подстрока найдена, то она удаляется путем замены на пустую строку.
- После удаления пробелов, цикл while повторяется, чтобы найти следующую подстроку
. - После выхода из цикла while выводится результат - введенная пользователем строка без пробелов.
- В конце программы возвращается 0, что означает успешное выполнение программы.