Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
MySQL
Сообщений: n/a
#1

Парсер урлов для ГЕТ и переменных для ПОСТ на Ц - C++

15.03.2011, 03:33. Просмотров 674. Ответов 0
Метки нет (Все метки)

Пишу на Ц парсер для переменных окружения и стандартного ввода - аналог функций GET и POST на PHP.
Ощущение, что обработка строк на Ц почти аналогична ходьбе на руках - в принципе возможно, но крайне неудобно.
Или приём пищи хоккейными клюшками. Причём на вытянутых руках.
Предстваляю какая чехарда начинается при вызове библиотечной функции - поиск и подгрузка с диска нужного *.so, поиск точки входа и тп.
На Асме такого бардака стараться больно долго. Оптимизирующим компиляторам и не снилось какой красивый код руками можно написать.
В общем пишу прогу разбирающую урлу на переменные со значениями. Наверняка кто-то где-то такое уже делал, но я не нашел.
Если кто знает где искать - подскажите. Меньше мучаться буду.
А тут ещё совсем неестетсвенная проблема - написать конвертер - из байта делать байт.
Причём не какие-то там кодировки или шифрование. Всё тривиально. Нужно байт интерпретируемый (ой блин, компилируемый)
как целое бесзнаковое число считать символом - просто MOV. В терминах Ц (если он вдруг числа хранит как строки) функция ITOA.
Но такой во всяких инклюдах с либами на FreeBSD 5.1 на нашёл. Обратная функция есть, и вообще, и в коде.
И писать её приходится только потому, что когда ненадо Ц мешает обрабатывать данные, типо заботится о целостности.
А когда надо бы проверять хотябы границы массива, плюёт с высокой колокольни.
А ведь наверняка рядом с переменной есть структура, в которой хранится и тип и размер. Надо только поменять тип.
Да... на лирику потянуло. Спать надо больше. Итак заготовка:

// gcc -L/usr/local/lib/mysql -lmysqlclient -lz -lcrypt -lm -L/usr/lib -lssl -lcrypto -o get_vars get_vars.c

#include </usr/include/stdarg.h>
#include </usr/include/stdio.h>
#include </usr/include/stdlib.h>
#include </usr/include/string.h>

char Query[100], *String, *Mail_user, *Mail_old_password, *Mail_new_password, *Mail_new_password1, *ErrorMessage;
int Pay, Result; //mysql_real_query();
unsigned long i;
unsigned long String_Length;
char *Variable, *Value, *Write_Symbol, Symbol[1]; //Read_Symbol
unsigned int Character, Read_Symbol;

//unsigned int ITOA (unsigned int iNteger) {unsigned int cHaracter; unsigned int hUndreds, tEns, oNes;
char ITOA (unsigned int iNteger) { char cHaracter; unsigned int hUndreds, tEns, oNes;
hUndreds%=iNteger/100; iNteger=iNteger-hUndreds*100;
tEns%=iNteger/10; oNes=iNteger-tEns*10;
// cHaracter=hUndreds*100+tEns*10+oNes;
cHaracter=(hUndreds-'0')*100+(tEns-'0')*10+(oNes-'0');
return(cHaracter); }

int main (int argc, char **argv) { setvbuf (stdout, NULL, _IONBF, 0);
String = getenv ('CONTENT_LENGTH'); String = getenv ('SHLVL'); i=atoi(String);
//printf('String=%s
',String); printf('i=%d
',i);

//Read_Symbol=205; Character=ITOA(Read_Symbol); printf('rs=%d
',Character);
//Read_Symbol=205; Write_Symbol=ITOA(Read_Symbol); printf('rs=%d
',Write_Symbol);
Read_Symbol=205; Symbol[0]=ITOA(Read_Symbol); printf('rs=%d
',Symbol[0]);

String = getenv ('CLIENT_IP'); String = getenv ('QUERY_STRING'); String = getenv ('PATH');
String_Length=strlen(String);
for (i=0; i<String_Length; i++) { Variable=''; Value=''; Read_Symbol=String[i]; //putchar(Read_Symbol);
//Write_Symbol=Read_Symbol;
/*
if (Read_Symbol>32 && Read_Symbol<50) {printf('F*ck
');}
Character=atoi(&Read_Symbol);
Symbol[0]=Read_Symbol;
Write_Symbol='64';
Character=atoi(Write_Symbol);
Character=atoi('Z'); //Symbol[0]); //Write_Symbol=Character; //Write_Symbol='1';

if (Read_Symbol=='+') {Write_Symbol=' &qu
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.03.2011, 03:33     Парсер урлов для ГЕТ и переменных для ПОСТ на Ц
Посмотрите здесь:

Какие операции доступны для целочисленных переменных и недоступны для вещественных? - C++
Какие операции доступны для целочисленных переменных и недоступны для вещественных? 1.Арифметические операции (сложение, вычитание,...

Парсер для статистики - C++
Добрый вечер. Если я ошибся с термином, извините. Уже достаточно давно появилось желание собирать и анализировать статистику чего-либо....

Парсер для avito - C++
Всем привет! Хочу написать парсер для сайта avito. Суть следующая: хочу чтобы алгоритм заходил на сайт, делал сортировку на заданным...

Парсер для математических выражений - C++
Здравствуйте уважаемые товарищи форумчане. Я пишу интерпретатор математических выражений и, собственно, для этого, сначала перевожу...

Таблица истинности для N переменных С++ - C++
Добрый день. Пересмотрел все похожие темы, но так и не нашел ответа. Так что приходится создань еще одну тему. Цель: построить таблицу...

Подмена переменных для ссылок - C++
В общем, такое дело: преподаватель задала вопрос, на который я не смог ответить - как сделать так, что бы ссылка инициализированная на одну...

C++ switch для переменных char - C++
можно ли switch применять к переменным типа char или в чём тогда ошибка, подчёркивает строку case 'London':? #include &lt;iostream&gt; ...

Функция для записи переменных - C++
К примеру, есть код:cout&lt;&lt;&quot;Введите а и б&quot;&lt;&lt;endl; cin&gt;&gt;a&gt;&gt;b; sum=a+b; cout&lt;&lt;&quot;сумма=...

Тип переменных для LPCTSTR? - C++
День добрый. Пишу на Lua, но вот пришлось делать dll для lua на c++. Внедрил в свою dll функцию с w32, но MVisual C++ 2010 тут же...

Диапазон значений для переменных - C++
Всем привет. Недавно начал изучать язык с++ и возник вопрос при решении задачи. Как на языке с/с++ задать конкретный промежуток значений...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru