Исправить код, программа избавления от лишних пробелов итабуляций - C (СИ)

Узнай цену своей работы

Формулировка задачи:

#include <stdio.h>
#include <string.h>
 
int del (char a[], int sz)  //избавляемся от лишних пробелов
{
  int i = 0, j, n = 20;
    while (i < n)  //пока не пройдет всю строчку
    {
        if(a[i]==' ' && (a[i+1]==' ' || a[i-1]==' '))  //замена нескольких пробелов на один
        {
            for(j = i; j < n; j++)
            a[j]=a[j + 1];
            n--;
        }
        else
        {
            i++;
        }
    }
}
 
int main ()
{
int i = 0, j, n = 0;
 char input[100];
    while ((input[n] = getchar()) != '\n') 
    {
        n++;
    }
    input[n] = '\0';
    del (input, 100);
    printf("%s\n",input);
    printf("\n");
}
Проблема в том, что я могу вводить строку, равную строго числу n, а мне надо, чтобы он перестал ее читать после enter Как лучше написать этот момент? int i = 0, j, n = 20; while (i < n) //пока не пройдет всю строчку

Решение задачи: «Исправить код, программа избавления от лишних пробелов итабуляций»

textual
Листинг программы
#include <conio.h>
............
ch=getch();

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

  1. В начале программы подключается библиотека , которая содержит функции для работы с консолью.
  2. Далее в коде есть пропущенный участок, который начинается с ............ и заканчивается на ch=getch();
  3. Функция getch(); используется для получения нажатой клавиши от пользователя. Значение этой функции присваивается переменной ch.

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

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