Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Разделение строки на части

32K
23 января 2010 года
xface
43 / / 07.11.2009
Привет. Есть проблемка. Вобщем нужно строку: char st[10] = "2-3+4-3" или -3b+2c+1, разделить на символы, т.е отделить числа со знаком, чтобы получилось вот так 2 -3 4 -3 или -3b 2c 1. Язык C. Функция strtok не подходит. Спасибо.
297
23 января 2010 года
koodeer
1.2K / / 02.05.2009
Код:
#include <stdlib.h>

void main()
{
    const int size = 10;

    //char st[size] = "2-3+4-3";
    char st[size] = "-3b+2c+1";

    char dest[size];
    char *ptr = st;

    while (*ptr != NULL)
    {
        int d = strtol(ptr, &ptr, 36);

        if (d >= 0)
            _itoa_s(d, dest, size, 36);
        else
        {
            _itoa_s(abs(d), dest+1, size-1, 36);
            dest[0] = '-';
        }

        printf("%s\n", dest);
    }
}

Вряд ли можно сделать короче :cool:
1.9K
23 января 2010 года
GreenRiver
451 / / 20.07.2008
Цитата: koodeer

Вряд ли можно сделать короче :cool:


Зато можно сделать длиннее ;)
Например, любая опечатка в строке приводит к зацикливанию :rolleyes:
Для воспроизведения ошибки:
-3b+(2c+1
-3b-+2c+1

P.S. но если строка валидная - красивое решение!

32K
23 января 2010 года
xface
43 / / 07.11.2009
koodeer, спасибо работает. Вот только на Borland C не компилится, ругается на функции _itoa_s. Если ли аналогни в Borland C?
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог