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

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

02.02.2013, 22:06. Просмотров 1897. Ответов 2
Метки нет (Все метки)

Надо удалить символы в строке, стоящие на четных местах. И удалить лишние пробелы и знаки табуляции в строке, заменив одним пробелом. Есть код, но надо сделать то же самое через string.h. Как это заварить?
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#include <stdio.h>
 
int main(int argc, const char * argv[])
{
    while (1) {
    int a=1000,z,i=0;
    char s[a];
    printf("Введите строку не более %d символов:\n",a);
 
    
    /*while (((z=getchar())!=EOF)&(z!='\n')) {
        s[i]=z;
        i++;
    }
    s[i]='\0';
    */
    gets(s);
     char ss[a];
    i=0;
    int f=0,f2=0;
    for (int j=0; s[j]!='\0'; j++) {
        if ((s[j]!=' ')&(s[j]!='\t')) {
            f=1;
            if (f2==0) {
                ss[i]=s[j];
                i++;
                f2=1;
            }
            else {
                f2=0;
            }
           
        }
        else {
            if (f==1) {
                ss[i]=' ';
                i++;
                f=0;
                f2=0;
            }
            else {
                f=0;
                f2=0;
            }
        }
    }
    if (ss[i-1]==' ') {
        ss[i-1]='\0';
    }
    else {
        ss[i]='\0';
    }
    /*
    for (int j=0; ss[j]!='\0'; j++) {
        putchar(ss[j]);
    }
     */
    puts(ss);
    }
    return 0;
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.02.2013, 22:06
Ответы с готовыми решениями:

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

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

Во вводимом с клавиатуры тексте удалить все пробелы, знаки табуляции
Нужно написать программу, которая во вводимом с клавиатуры тексте удалит все пробелы, знаки...

Написать программу, в которой функция будет убирает все лишние пробелы и табуляции в строке
Помогите написать программу,в которой функция будет убирает все лишние пробелы и табуляции в строке.

Удвоить пробелы в строке символов, введенных с клавиатуры; символы, являющиеся цифрами - удалить
Ребята не могу найти ошибку помогите пожалуйста. Написать программу, которая удваивает пробелы в...

2
f1z1
1 / 1 / 0
Регистрация: 07.06.2011
Сообщений: 32
06.02.2013, 17:50 2
апп
0
Nikola-Best
8 / 8 / 4
Регистрация: 19.08.2009
Сообщений: 33
06.02.2013, 21:39 3
вот, тесть
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#include <stdio.h>
#include <string.h>
 
 
#define BUFF_SIZE 1000
 
int main( int argc, char **argv)
{
    char buff[BUFF_SIZE];
    char res[BUFF_SIZE];
    
    puts( "enter string");
    fgets( buff, BUFF_SIZE, stdin);
    
    // remove \t
    int tabCounter = 0;
    while( 1)
    {
        char *tabPos = strchr( buff, '\t');
        if( tabPos == NULL)
            break; // табы кончились
        *tabPos = ' ';
        tabCounter++;
    } // while 1
    printf( "tabs removed = %d\n", tabCounter);
    
    // удаляем четные символы
    for(int i = 1; i < strlen(buff); i++)
    memmove( buff+i, buff+i+1, strlen(buff+i));
    
    // чистим от лишних пробелов
    memset( res, 0, BUFF_SIZE);
    for(int i = 0; i < strlen( buff); i++)
    {
        if( buff[i] != ' ')
        {
            char *end = strchr( buff+i, ' ');
            if( end == NULL)
            {
                strcat( res, buff+i);
                break;
            } // if end == null
            else
            {
                end++;
                strncat( res, buff+i, end-(buff+i));
                i = end - buff - 1;
            } // else
        } // if letter
        } // for i < strlen(buff)
    puts( res);
    
    getchar();
    return 0;
} // main
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.02.2013, 21:39

Из слов исходной строки удалить все символы, стоящие на нечетных местах
Дана строка, содержащая слова, разделенные одним или несколькими разделительными символами...

Заменить символы табуляции и рядом стоящие пробелы одним пробелом
Заменить символы табуляции и рядом стоящие пробелы символом одним пробелом! помогите пожалуйста

Дана строка символов разделенных пробелом. Удалить все символы стоящие на четных местах
Дана строка символов разделенных пробелом.удалить все символы стоящие на четных местах Помогите...


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

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

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