![]() |
Модераторы: bsa |
![]() ![]() ![]() |
|
GrayCardinal |
|
|||
Фигасе ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3039 Регистрация: 9.11.2003 Репутация: нет Всего: 58 |
День добрый !
(простите за тупой вопрос) В буфере есть строка. В ней подстрока. Как заменить подстроку на какую-нибудь другую строку ? Можно ручками. НО. может спец функтяра есть в стандартном Си ? |
|||
|
||||
zim22 |
|
|||
![]() depict1 ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2682 Регистрация: 15.1.2009 Где: Украина Репутация: 29 Всего: 69 |
|
|||
|
||||
GrayCardinal |
|
|||
Фигасе ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3039 Регистрация: 9.11.2003 Репутация: нет Всего: 58 |
zim22,
Лиж бы что сказать ![]() Это сообщение отредактировал(а) GrayCardinal - 26.3.2009, 14:04 |
|||
|
||||
mrbrooks |
|
|||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 19 Всего: 306 |
zim22, я так пологаю автор просил для С, а не С++
![]() |
|||
|
||||
GrayCardinal |
|
|||
Фигасе ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3039 Регистрация: 9.11.2003 Репутация: нет Всего: 58 |
похоже не я один сегодня туплю
![]() ![]() |
|||
|
||||
mrbrooks |
|
|||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 19 Всего: 306 |
чоорт
![]() Это сообщение отредактировал(а) mrbrooks - 26.3.2009, 14:11 |
|||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
ну так <cstring> заменить на <string.h> и в путь а что не устраивает то ? |
|||
|
||||
GrayCardinal |
|
|||
Фигасе ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3039 Регистрация: 9.11.2003 Репутация: нет Всего: 58 |
Размер подстроки != размеру того чем заменяем.
|
|||
|
||||
Rififi |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1254 Регистрация: 9.3.2008 Репутация: 3 Всего: 36 |
GrayCardinal,
Стандартной функции нет, потому что в Си нет строк, только массивы, поэтому если заменяемая строка больше заменяемого фрагмента, то возникают сложности: если массив статический - то изменить его размер невозможно, а если динамический - то неизвестно каким образом для него была выделена память, и к тому же при переаллокации теряется исходный адрес указателя. выход: ручками или c++ |
|||
|
||||
mrbrooks |
|
|||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 19 Всего: 306 |
GrayCardinal, камрад - сама идея тебе предоставлена - нюансы - это уже по твоей части
![]() |
|||
|
||||
GrayCardinal |
|
|||
Фигасе ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3039 Регистрация: 9.11.2003 Репутация: нет Всего: 58 |
Rififi,
Не подскажешь как это в Си++ выглядеть будет ? Надо си->Си++-> и вернуть обратно сишную строку в тот же буфер. Добавлено через 1 минуту и 1 секунду mrbrooks, У меня идей уже знаешь сколько ? Жарить на завтрак можно ![]() |
|||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
||||
|
||||
mrbrooks |
|
|||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 19 Всего: 306 |
||||
|
||||
Rififi |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1254 Регистрация: 9.3.2008 Репутация: 3 Всего: 36 |
GrayCardinal,
на "голом" C: 1. подсчитать общую длину результирующей строки (с учётом завершающего нулевого символа) 2. скопировать в рез-строку символы из исходной до начала заменяемого фрагмента (strcpy) 2. добавить к рез-строке то, на что заменяем (strcat) 3. добавить к рез-строке остаток символов из исходной строки после заменяемого фрагмента 4. освободить исходный буфер (если требуется) 5. переприсвоить указатели (опционально) иначе см. выше про std:string Это сообщение отредактировал(а) Rififi - 26.3.2009, 14:27 |
|||
|
||||
GrayCardinal |
|
|||
Фигасе ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3039 Регистрация: 9.11.2003 Репутация: нет Всего: 58 |
ОК. Вроде понял куда копать. Спасибо всем...
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "C/C++: Для новичков" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |