Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
kruss802
0 / 0 / 0
Регистрация: 15.03.2018
Сообщений: 21
1

В символьной строке удалить все лишние подряд идущие пробелы

07.09.2018, 20:19. Просмотров 840. Ответов 5
Метки нет (Все метки)

Помогите написать программу. Все изменения строки производить в том же массиве. Не допускается использование библиотек работы с символьными строками.
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.09.2018, 20:19
Ответы с готовыми решениями:

В символьной строке удалить все слова, содержащие две подряд идущие гласные буквы
Здравствуйте, помогите пожалуйста напрсать программу, сам вообще ноль :( Условие: В символьной...

В заданной строке удалить все лишние пробелы, заменяя несколько подряд идущих пробелов одним
Добрый день. Столкнулся с проблемой в программе. Пробелы удаляет, но если ввести пробелы перед...

Удалить подряд идущие пробелы, не используя библиотеку string
Удалить подряд идущие пробелы не используя библиотеку string.h Пример реализации: #include...

В символьной строке оставить только те слова, в которых встречаются подряд идущие одинаковые буквы
Задача такая: В символьной строке оставить только те слова, в которых встречаются подряд идущие...

Удалить символы в строке, стоящие на четных местах; удалить лишние пробелы и знаки табуляции в строке, заменив одним пробелом
Надо удалить символы в строке, стоящие на четных местах. И удалить лишние пробелы и знаки табуляции...

5
SlavaSokolov
170 / 134 / 105
Регистрация: 14.04.2016
Сообщений: 735
07.09.2018, 21:45 2
Лучший ответ Сообщение было отмечено kruss802 как решение

Решение

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#include <stdio.h>
#include <windows.h>
 
#define BUFFER 256
 
char buffer[BUFFER];
 
int main()
{
    int i, c;
 
    printf("Enter your text, slave: ");
    for (i = c = 0; (c = getchar()) != '\n' && i < BUFFER; i++)
        buffer[i] = c;
    if (i == BUFFER) {
        printf("Stop, idiot!\n");
        i--;
    }
    buffer[i] = '\0';
 
 
    for (i = c = 0; buffer[i] != '\0' && i < BUFFER;)
    {
        if (buffer[i] == ' ') {
            buffer[c++] = ' ';
            while (buffer[i] == ' ')
                i++;
        } else
            buffer[c++] = buffer[i++];
    }
 
    buffer[c] = '\0';
 
    printf("Your line, slave:\n%s\n", buffer);
 
    system("pause");
}
1
kruss802
0 / 0 / 0
Регистрация: 15.03.2018
Сообщений: 21
07.09.2018, 22:50  [ТС] 3
А как сделать, чтобы вначале строки пробел не ставился?
0
kruss802
0 / 0 / 0
Регистрация: 15.03.2018
Сообщений: 21
07.09.2018, 23:07  [ТС] 4
Нужно переписать программу, чтобы обращение к элементам массива было реализовано с помощью указателей, а не индексов.
Запрещается использовать библиотечные функции обработки символьных строк.
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <stdio.h>
int main(){
    char str[100] = {0};
    int i = 0;
    int c = 0;
    printf("Enter your text: ");
    
        for(i = c = 0;(c = getchar()) != '\n' && i < 100; i++)
        str[i] = c;
    str[i] = '\0';
    for(i = c = 0; str[i] != '\0' && i < 100;)
    {
        if(str[i] == ' '){
            str[c++] = ' ';
            while(str[i] == ' ')
            i++;
        }
        else{
            str[c++] = str[i++];
        }
    }
    str[c] = '\0';
    printf("Your line:\n%s\n", str);
}
0
SlavaSokolov
170 / 134 / 105
Регистрация: 14.04.2016
Сообщений: 735
07.09.2018, 23:15 5
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include <stdio.h>
int main() {
    char str[100] = { 0 };
    int i = 0;
    int c = 0;
    printf("Enter your text: ");
 
    for (i = c = 0; (c = getchar()) != '\n' && i < 100; i++)
        str[i] = c;
    str[i] = '\0';
    for (i = c = 0; *(str + i) != '\0' && i < 100;)
    {
        if (*(str + i) == ' ') {
            *(str + c) = ' ';
            c++;
            while (*(str + i) == ' ')
                i++;
        }
        else {
            *(str + c) = *(str + i);
            c++;
            i++;
        }
    }
    *(str + c) = '\0';
    printf("Your line:\n%s\n", str);
 
    system("pause");
}
0
SlavaSokolov
170 / 134 / 105
Регистрация: 14.04.2016
Сообщений: 735
07.09.2018, 23:18 6
kruss802, если я правильно понял, то 12 строку сменить на;
C
1
printf("Enter your text, slave:");
0
07.09.2018, 23:18
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.09.2018, 23:18

Ввести строку с клавиатуры. Заменить все пробелы идущие подряд на один пробел
Ввести строку с клавиатуры. Заменить все пробелы идущие подряд на один пробел. Прошу помощи, т.к....

Удалить из файла с текстом все лишние пробелы
удалить из файла с текстом все лишние пробелы. Оставшееся переписать во второй файл

Удалить из файла все однобуквенные слова и лишние пробелы
Дан символьный файл f. Группы символов, разделенные пробелами (одним или несколькими) и не...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru