Удалить из строки все лишние пробелы: в начале, в конце, повторяющиеся - 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();
}

Объяснение кода листинга программы

  1. Подключение необходимых библиотек для работы со строками и вводом/выводом.
  2. Установка локали на русскую.
  3. Объявление двух буферов для хранения исходной и результирующей строк.
  4. Ввод исходной строки с помощью функции fgets.
  5. Проход по всем символам исходной строки.
  6. Удаление лишних пробелов в начале, в конце и между повторяющимися пробелами.
  7. Копирование обработанных символов в результирующую строку.
  8. Удаление последнего лишнего пробела в результирующей строке.
  9. Вывод результирующей строки.

Оцени полезность:

14   голосов , оценка 3.786 из 5
Похожие ответы