![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
DarkDS |
|
|||
Unregistered |
Есть строка типа "слово1=слово2+слово3" (в общем то сама строка не так важна..." Нужно с разбить на 3-и подстроки...
Причем положение = и + не известно... Как можно сделать это используя стандартные функции С? (все полученные строки должны быть либо char[] либо char*) |
|||
|
||||
HexoGenus |
|
|||
![]() Шустрый ![]() Профиль Группа: Экс. модератор Сообщений: 110 Регистрация: 28.8.2002 Где: Ростов-на-Дону Репутация: нет Всего: нет |
String a="22!33!A!B!",p,q,w,z;
String * s[4]={&p,&q,&w,&z}; int j=0; for (int i=1; i<=a.Length(); i++) if (a[i]!='!') *s[j]=*s[j]+a[i]; else j++; Как то написал, до сих пор приятно смотреть ![]() Раскидывает значения разделенные ! по переменным Измени проверку на "!" на проверку ("=" или "+") и все заработает ![]() правда здесь используется способность String добавлять букву в конец строки и функция Length() определяющая длинну строки... но думаю эти функции ты сам сможешь написать для char ... ![]() Это сообщение отредактировал(а) HexoGenus - 5.5.2003, 13:55 --------------------
Когда невозможно уже работать напряженнее, начни работать умнее. |
|||
|
||||
Unregistered |
|
|||
Unregistered |
strchr: finds c in str
char *strchr(const char *str, int c); Prototype in string.h Returns a pointer to the first occurrence of the character c in str; if c does not occur in str, strchr returns NULL. |
|||
|
||||
DarkDS |
|
|||
Unregistered |
strchr не подходит, так как он возращает ссылку на первый символ... То есть если была строка "слово1=слово2+слово3" то при поиске "=" вернется "=слово2+слово3"... То есть это не подстрока получается... |
|||
|
||||
Люда |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 71 Регистрация: 24.4.2002 Репутация: нет Всего: нет |
char *token;
char subtrings[128][10]; int i=1; token=strtok(str,"="); strcpy(substring[i],token); while((token=strtok(NULL,"+"))!=NULL) { i++; strcpy(substring[i],token); } |
|||
|
||||
DENNN |
|
||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3878 Регистрация: 27.3.2002 Где: Москва Репутация: 1 Всего: 43 |
А ты в этой подстроке поищи опять символ-разделитель и получишь подстроку ![]()
Если задача писать именно под чистый C++ то можно просто использовать std:string |
||||
|
|||||
Unregistered |
|
|||
Unregistered |
char *ptr; if(ptr[1]!= 0) подстрока получается |
|||
|
||||
Guest |
|
|||
Unregistered |
Аха... Тока как вот как получить первое слово отдельно? чтобы было: "слово1" "слово2" "слово3" |
|||
|
||||
DarkDS |
|
||||
Unregistered |
char *ptr; if(ptr[1]!= 0) подстрока получается Подстрока то подстрока, тока без первой части... а мек как раз первая часть нужна! |
||||
|
|||||
DENNN |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3878 Регистрация: 27.3.2002 Где: Москва Репутация: 1 Всего: 43 |
memcpy нам поможет! |
|||
|
||||
Dov |
|
|||
![]() аСинизатор ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1721 Регистрация: 10.5.2003 Где: Эрец-Исраэль Репутация: 15 Всего: 88 |
Это сообщение отредактировал(а) Dov - 29.5.2003, 02:04 -------------------- Тут вечности запах томительный, И свежие фрукты дешевые, А климат у нас – изумительный, И только соседи – #уевые. Игорь Губерман. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |