Замена нескольких пробелов на один - C (СИ)
Формулировка задачи:
Пишу код.
В принципе, если n приравнять к любому значению, напр. 'i', все работает - следующие пробелы за первым меняются на i. Не могу подобрать значение,нужно что-то вроде "бэкспейс". Может можно с getchar() как-то попробовать? Подскажите плиз. Код может быть чуть не корректен, но в Microsoft Visual C++ 6.0 все работает. Спасибо.
#include <stdio.h> /*копирование ввода, замена нескольких пробелов на один*/ main () { int c, n, k, p; p = 0; n = ' '; while ((c = getchar()) != EOF) { k = c; if (c == ' ') {k = n, ++p;} if (p > 0) {n = ?;} putchar (k); } }
Решение задачи: «Замена нескольких пробелов на один»
textual
Листинг программы
#include <bool.h> #include <stdio.h> int main(void) { bool previous_symbol_was_space = true; // для удаления начальных пробелов int ch; while ((ch = getchar()) != EOF) { if (previous_symbol_was_space && ch == ' ') { continue; } putchar(ch); previous_symbol_was_space = (ch == ' '); } return 0; }
Объяснение кода листинга программы
- В начале программы подключаются две библиотеки: stdio.h и ctype.h. Библиотека stdio.h используется для ввода-вывода данных, а ctype.h содержит функции для работы со строками.
- Далее, в функции main(), объявляются две переменные: previous_symbol_was_space типа bool (логическое значение true или false) и ch типа int (целое число).
- Переменная previous_symbol_was_space инициализируется значением true, что означает, что предыдущий символ был пробелом.
- Затем, в цикле while, происходит чтение символа из стандартного ввода (файл stdin) с помощью функции getchar().
- Если предыдущий символ был пробелом и текущий символ также является пробелом, то цикл продолжается с помощью инструкции continue.
- Если предыдущий символ не был пробелом или текущий символ не является пробелом, то он выводится на стандартный вывод (файл stdout) с помощью функции putchar().
- Значение переменной previous_symbol_was_space устанавливается в true, если текущий символ является пробелом, и в false в противном случае.
- Цикл while выполняется до тех пор, пока не будет достигнут конец файла (EOF).
- В конце программы возвращается значение 0, что означает успешное выполнение программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д