|
Передача указателя в качестве аргумента. |
|
|
|
Dec 20 2016, 10:33
|
Профессионал
    
Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075

|
Есть такая функция. Код uint32_t XML_PARSER_FindElementEnd(char *xml_str, char* el_name, char* pchr) { uint32_t el_size = strlen(el_name); char buf[el_size+4]; memcpy(&buf[0], "<", 1); memcpy(&buf[1], el_name, el_size); memcpy(&buf[el_size+1], "/>\0", 3); pchr = strstr(xml_str, buf); if(pchr == NULL) return 0; else return 1; } Внутри функции pchr принимает правильное значение, все прекрасно. Проверяем Код uint32_t XML_PARSER_NewElement(char *xml_str, char *parent, char* el_name) { char *pchr_test=NULL;
if (!XML_PARSER_FindElementEnd(xml_str, parent, pchr_test)); return 0; } pchr_test остается 0. Подскажите где ошибка.
|
|
|
|
|
 |
Ответов
|
Dec 20 2016, 11:48
|

Профессионал
    
Группа: Свой
Сообщений: 1 080
Регистрация: 16-11-04
Из: СПб
Пользователь №: 1 143

|
Цитата(Jenya7 @ Dec 20 2016, 13:33)  Код uint32_t XML_PARSER_FindElementEnd(char *xml_str, char* el_name, char* pchr) { char buf[el_size+4]; memcpy(&buf[0], "<", 1); memcpy(&buf[1], el_name, el_size); memcpy(&buf[el_size+1], "/>\0", 3); } какая то магия понаписана может попроще для людей сделать ? Код char buf[ el_size + sizeof( "</>" ) ]; sprintf( buff, "<%s/>", el_name );
--------------------
Марс - единственная планета, полностью населенная роботами (около 7 штук).
|
|
|
|
|
Dec 20 2016, 12:05
|
Профессионал
    
Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075

|
Цитата(megajohn @ Dec 20 2016, 17:48)  какая то магия понаписана может попроще для людей сделать ? Код char buf[ el_size + sizeof( "</>" ) ]; sprintf( buff, "<%s/>", el_name ); вы считаете что монструозная sprint это попроще?
|
|
|
|
|
Dec 21 2016, 09:37
|

Профессионал
    
Группа: Свой
Сообщений: 1 032
Регистрация: 13-03-08
Из: Маськва
Пользователь №: 35 877

|
Цитата(Jenya7 @ Dec 20 2016, 15:05)  вы считаете что монструозная sprint это попроще?  Вообще-то, вся монструозная XML_PARSER_FindElementEnd() - это ад и ужас. Не проще написать свою strstr(), которая знает, что шаблон, который мы ищем, должен быть с кавычками? Расход стека - единицы байт. Это если "в лоб". А если XML-ка может быть испорченной, готовьте мыло с верёвкой. Полноценный парсер, который проверит все возможные ошибки, написать не очень просто. Даже если уметь писать на языке си...
--------------------
Тут обсуждается творческий порыв, а не соответствие каким-либо стандартам ©
|
|
|
|
|
Dec 21 2016, 10:51
|

Профессионал
    
Группа: Свой
Сообщений: 1 333
Регистрация: 27-10-08
Из: Планета Земля
Пользователь №: 41 226

|
Цитата(esaulenka @ Dec 21 2016, 12:37)  Вообще-то, вся монструозная XML_PARSER_FindElementEnd() - это ад и ужас. Не проще написать свою strstr(), которая знает, что шаблон, который мы ищем, должен быть с кавычками? Расход стека - единицы байт.
Это если "в лоб". А если XML-ка может быть испорченной, готовьте мыло с верёвкой. Полноценный парсер, который проверит все возможные ошибки, написать не очень просто. Даже если уметь писать на языке си... На любом языке не просто. Но можно.
|
|
|
|
Сообщений в этой теме
Jenya7 Передача указателя в качестве аргумента. Dec 20 2016, 10:33 andrew_b Цитата(Jenya7 @ Dec 20 2016, 13:33) Подск... Dec 20 2016, 10:43 Сергей Борщ QUOTE (Jenya7 @ Dec 20 2016, 12:33) Подск... Dec 20 2016, 10:46 novikovfb Цитата(Jenya7 @ Dec 20 2016, 14:33) Есть ... Dec 20 2016, 10:46 ucMike if (!XML_PARSER_FindElementEnd(xml_str, parent... Dec 20 2016, 10:57 Jenya7 Цитата(ucMike @ Dec 20 2016, 16:57) if (... Dec 20 2016, 11:10   Jenya7 Цитата(esaulenka @ Dec 21 2016, 15:37) Во... Dec 21 2016, 10:34 Jenya7 кстати сделал проверку
Код #if USE_MEMCPY
memc... Dec 20 2016, 13:14 conan Цитата(Jenya7 @ Dec 20 2016, 16:14) посмо... Dec 21 2016, 02:38  Jenya7 Цитата(conan @ Dec 21 2016, 08:38) Зато m... Dec 21 2016, 06:37 arhiv6 conan, а чем они Вам не нравятся? Dec 21 2016, 06:15 conan Цитата(arhiv6 @ Dec 21 2016, 09:15) conan... Dec 21 2016, 09:12 Сергей Борщ Не, массивы переменной длины иногда могут быть пол... Dec 21 2016, 06:51 Jenya7 Цитата(Сергей Борщ @ Dec 21 2016, 12:51) ... Dec 21 2016, 07:03 esaulenka Цитата(Jenya7 @ Dec 21 2016, 13:34) а что... Dec 21 2016, 12:41 Jenya7 Цитата(esaulenka @ Dec 21 2016, 17:41) Од... Dec 21 2016, 14:10
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|