Удалить из строки все лишние пробелы: в начале, в конце, повторяющиеся - 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.
- Проход по всем символам исходной строки.
- Удаление лишних пробелов в начале, в конце и между повторяющимися пробелами.
- Копирование обработанных символов в результирующую строку.
- Удаление последнего лишнего пробела в результирующей строке.
- Вывод результирующей строки.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д