Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
prohorov
Зарегистрирован: 30.03.2007 Сообщения: 1
|
Добавлено: Пт Мар 30 2007 15:59 Заголовок сообщения: Вопрос по С и С++ |
|
|
Добрый день.
Я написал програмку на
С ( не С++ ), которая
запускается из-под qmail'а.
В файле smtpplugins прописан
запуск Perl-скрипта, а уже из
него запускается эта програмка.
Вот фрагмент текста программы на С :
.....................
char mq[] ="(([a-z0-9]|@|\\-|_|\\.){1,1})";
char mz[] ="(([a-z0-9]|@|\\-|_|\\.){0,})";
int smq =sizeof(mq);
int smz =sizeof(mz);
...
int k=0;
p2[k]=40;
for(i=0;p1[i]>0;i++)
{
k++;
switch(p1[i])
{
case 42: // *
memcpy((char*)p2+k,mz,smz-1);
k=k+smz-2;
continue;
case 63: // ?
memcpy((char*)p2+k,mq,smq-1);
k=k+smq-2;
continue;
.....................
В данном фрагменте создается шаблон
для регулярного выражения.
Символы '*' и '?' заменяются соответственно
на строки mz и mq .
Вопросы :
1. Есть ли стандартные функции в C , которые
позволяют сделать эту замену "по-человечески" ?
2. Я подобным образом ( из-под qmail )
пытался запустить программу на C++ .
Самую простую, маленькую.
Так вот, под root'ом эта программа работала,
а, запущенная из-под smtpplugins->Perl скрипт
возвращала значение "-1", т.е. что-то непонятное.
Вы не могли бы мне подсказать про "стандартные"
функции для шаблонов и про запуск программы на С++ ?
Спасибо !
Прохоров Юрий cosnat@mail.ru |
|
Вернуться к началу |
|
|
Jail
Зарегистрирован: 16.01.2007 Сообщения: 180 Откуда: Russia
|
Добавлено: Сб Мар 31 2007 10:43 Заголовок сообщения: |
|
|
Цитата: | 1. Есть ли стандартные функции в C , которые
позволяют сделать эту замену "по-человечески" ? |
Таких функций нет, это язык низкого уровня, это вам не Python.
Цитата: | 2. Я подобным образом ( из-под qmail )
пытался запустить программу на C++ .
Самую простую, маленькую.
Так вот, под root'ом эта программа работала,
а, запущенная из-под smtpplugins->Perl скрипт
возвращала значение "-1", т.е. что-то непонятное. |
С и С++ это не одно и тоже, даже при видимой схожести в синтаксисе! Возможно в данном случае возвращение '-1' из-за отказа в правах доступа. |
|
Вернуться к началу |
|
|
|