![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| Goganchic |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 678 Регистрация: 18.6.2004 Репутация: нет Всего: 5 |
Всем привет!
Как си-программисты знают, при запуске программы ей передается массив аргументов, обычно в переменной argv, которая представляет собой двумерный массив. У меня возникала проблема: надо из обычной строки руками или какой-нибудь особой функцией получить массив аргументов, как будто бы они заданы в командной строке. Первое, оно же ошибочное, решение - разбить строку по символу пробел. Ошибочное потому что не учитывает:
|
|||
|
||||
| JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 18 Всего: 162 |
Goganchic, может быть, тебе помогут исходники ld(unix)? Ведь он этим занимается, по идее - заполнением argc/argv (поправьте меня, если неправ).
|
|||
|
||||
| MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 52 Всего: 207 |
JackYF,
посмотри на семейство функций exec* т. е в ядро уже передаются указатели на строки, которые представляют аргументы парсингом занимается командный интерпретатор -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
| Goganchic |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 678 Регистрация: 18.6.2004 Репутация: нет Всего: 5 |
Придется смотреть сырки shell-а...
|
|||
|
||||
| Goganchic |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 678 Регистрация: 18.6.2004 Репутация: нет Всего: 5 |
Написал тут на досуге простенькие фукнции, посмотрите плз., сразу же скажу: эти функции очень сырые. Если кто предложит методы усовершенствования - будут оч. благодарен:
Скажу сразу же: эти функции обязательно должны быть написаны на си (не си++) и обязаны быть кроссплаформенными (без вских там Win API, в то же время использование линуховых фишек - не возбраняется). З.ы. память выделенную функцией str2argv нужно очищать руками. |
|||
|
||||
| MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 52 Всего: 207 |
Goganchic,
конечный автомат тут нужен -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
| Goganchic |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 678 Регистрация: 18.6.2004 Репутация: нет Всего: 5 |
MAKCim, ну это-то понятно. Только случай у нас не общий а частный, поэтому как-то не особо хочется припетать всю теорию конечных автоматов
|
|||
|
||||
| MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 52 Всего: 207 |
Goganchic,
а тут вся теория и не нужна нужен набор состояний и переходы между ними реализуется через матрицу указателей на функции только в этом случае можно будет учесть все возможные варианты строки -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |