Удалить из строки все лишние пробелы: в начале, в конце, повторяющиеся - C (СИ)
Формулировка задачи:
Дана строка предложение. Удалить из строки все лишние пробелы: в начале, в конце, повторяющиеся.
Не могу понять, как удалить все пробелы в начале и в конце.
#include <stdio.h> #include <locale.h> int main(int argc, char *argv[]) { setlocale(LC_ALL,""); char str[101]; printf ("Введите строку:"); gets(str); int j=1; for (int i=1; str[i]!=0; i++) { if((str[i] == ' ') && (str[i-1]==' ')) continue; str[j++] = str[i]; } if (str[j-1]==' ') j--; str[j] = 0; printf("Результат:"); puts(str); }
Решение задачи: «Удалить из строки все лишние пробелы: в начале, в конце, повторяющиеся»
textual
Листинг программы
#include <stdio.h> #include <locale.h> #include <string.h> int main(int argc, char *argv[]) { setlocale(LC_ALL,""); char str[101] = ""; char res[101] = ""; printf("Введите строку:"); fgets (str, 101, stdin); int j = 0; int i; for (i = 0; i<strlen(str) ; i++) { if (str[i] == ' ') { if (j==0) continue; if (str[i+1] == ' ') continue; } res[j] = str[i]; j++; } i=strlen(res); if(res[i-2] == ' ') res[i-2] = '\0'; printf("\nРезультат:%s", res); getchar(); }
Объяснение кода листинга программы
- Подключение необходимых библиотек для работы со строками и вводом/выводом.
- Установка локали на русскую.
- Объявление двух буферов для хранения исходной и результирующей строк.
- Ввод исходной строки с помощью функции fgets.
- Проход по всем символам исходной строки.
- Удаление лишних пробелов в начале, в конце и между повторяющимися пробелами.
- Копирование обработанных символов в результирующую строку.
- Удаление последнего лишнего пробела в результирующей строке.
- Вывод результирующей строки.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д