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