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

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

02.02.2013, 22:06. Просмотров 2199. Ответов 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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.02.2013, 22:06
Ответы с готовыми решениями:

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

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

Удалить из строки лишние пробелы и символы табуляции
Мне нужно удалить из строки лишние пробелы и символы табуляции, но FASM пишет ошибку section...

Во введённой строке удалить все символы, стоящие на нечётных местах
1.Во введённой строке удалите все символы стоящие на нечётных местах.

2
1 / 1 / 0
Регистрация: 07.06.2011
Сообщений: 32
06.02.2013, 17:50 2
апп
0
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
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.02.2013, 21:39

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

В символьной строке, каждые два соседних слова разделены одним пробелом.Удалить из строки все пробелы.
В символьной строке, содержащей не более 80 символов, каждые два соседних слова разделены одним...

Как удалить лишние пробелы, переносы и экранировать символы в строке?
на вход приходит строка. нужно в любой приходящей строке удалять переносы на следующую строку,...

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

Удалить все символы в строке, не являющиеся буквами и заменить множественные пробелы одним
Ребята,буду запредельно благодарен.


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

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

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