Отредактировать текст по заданным правилам - C (СИ)
Формулировка задачи:
№ 4. Задать с клавиатуры текст. Отредактировать текст по следующим правилам: перед запятой не может быть пробела; после запятой должен стоять один пробел; не могут стоять подряд две запятые.
Решение задачи: «Отредактировать текст по заданным правилам»
textual
Листинг программы
/* № 4. Задать с клавиатуры текст. Отредактировать текст по следующим правилам: перед запятой не может быть пробела; после запятой должен стоять один пробел; не могут стоять подряд две запятые. */ #include <stdio.h> #include <locale.h> int editstr(char* text) { size_t textLength = strlen(text); int i = 0; char buff[256]; for(i = 1;i < textLength - 1; i++) { if ((text[i] == ' ')&&(text[i+1] == ',')) { strncpy(buff, text+i+1,textLength); strncpy(&text[i], buff,textLength); } if ((text[i] == ',')&&(text[i+1] == ',')) { strncpy(buff, text+i+1,textLength); strncpy(&text[i], buff,textLength); } if ((text[i] == ',')&&(text[i+1] != ' ')) { strncpy(buff, text+i+1,textLength); strncpy(&text[i+2], buff,textLength); text[i+1] = ' '; } } } int main(int argc, char *argv[]) { setlocale( LC_ALL,"Russian" ); printf("Введите текст:"); char text[256]; gets(text); editstr(text); printf("%s",text); }
Объяснение кода листинга программы
- Задание текста в память компьютера с помощью клавиатуры.
- Ввод текста в программу с помощью функции gets().
- Выделение памяти под буфер для хранения отредактированного текста.
- Инициализация переменной textLength значением, равным длине введенного текста.
- Создание цикла for для обработки каждого символа исходного текста, начиная со второго символа и заканчивая предпоследним.
- Проверка условия: если текущий символ является пробелом и следующий символ является запятой, то выполняется блок кода.
- Копирование символов из буфера buff в переменную text, начиная с позиции i+1 и до конца текста.
- Проверка условия: если текущий символ является запятой и следующий символ также является запятой, то выполняется блок кода.
- Копирование символов из буфера buff в переменную text, начиная с позиции i+1 и до конца текста.
- Проверка условия: если текущий символ является запятой и следующий символ не является пробелом, то выполняется блок кода.
- Копирование символов из буфера buff в переменную text, начиная с позиции i+2 и до конца текста.
- Замена первого символа пробела на запятую.
- Вывод отформатированного текста на экран с помощью функции printf().
- Функция main() возвращает 0, что означает успешное выполнение программы.
- Ввод текста с клавиатуры не проверяется на ошибки.
- Программа не обрабатывает ситуацию, когда ввод текста превышает размер буфера.
- Программа не обрабатывает ситуацию, когда ввод текста содержит символы, не входящие в диапазон ASCII.
- Программа не обрабатывает ситуацию, когда ввод текста содержит символы, не соответствующие требованиям правил форматирования.
- Программа не обрабатывает ситуацию, когда ввод текста содержит только пробелы.
- Программа не обрабатывает ситуацию, когда ввод текста пустой.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д