P
PHPMaster
Делаю парсер на C
Нужно заменить ascii-коды символов на их эквиваленты
сейчас юзаю:
Примечание:
str = str_replace("~", "~", str); - в первом аргументе стоит аски код вида (& # 3 7 , форум их преобразовывает.
При запуске функции вылетает ошибка:
Как исправить? Может, вобще сделать по-другому? Жду ответов.
Нужно заменить ascii-коды символов на их эквиваленты
сейчас юзаю:
Код:
char *str_replace(char *str1, char *str2, char *str6)
{
char *str4;
char *str5=malloc(0);
while(strstr(str6, str1)) {
str4 = strstr(str6, str1);
strncpy(str5 + strlen(str5), str6, str4 - str6);
strcat(str5, str2);
str4 += strlen(str1);
str6 = str4;
}
return strcat(str5, str4);
}
char *htmldecode(char *str)
{
str = str_replace("!", "!", str);
str = str_replace(""", "\"", str);
str = str_replace("#", "#", str);
str = str_replace("$", "$", str);
str = str_replace("%", "%", str);
str = str_replace("&", "&", str);
str = str_replace("'", "'", str);
str = str_replace("(", "(", str);
str = str_replace(")", ")", str);
str = str_replace("*", "*", str);
str = str_replace("+", "+", str);
str = str_replace(",", ",", str);
str = str_replace("-", "-", str);
str = str_replace(".", ".", str);
str = str_replace("/", "/", str);
str = str_replace(":", ":", str);
str = str_replace(";,", ";", str);
str = str_replace("<", "<", str);
str = str_replace("=", "=", str);
str = str_replace("&62;", ">", str);
str = str_replace("?", "?", str);
str = str_replace("@", "@", str);
str = str_replace("[", "[", str);
str = str_replace("\", "\\", str);
str = str_replace("]", "]", str);
str = str_replace("^", "^", str);
str = str_replace("_", "_", str);
str = str_replace("`", "`", str);
str = str_replace("{", "{", str);
str = str_replace("|", "|", str);
str = str_replace("}", "}", str);
str = str_replace("~", "~", str);
return (str);
}
Примечание:
str = str_replace("~", "~", str); - в первом аргументе стоит аски код вида (& # 3 7 , форум их преобразовывает.
При запуске функции вылетает ошибка:
Код:
malloc(): memory corruption: 0x0805eb38 ***
======= Backtrace: =========
/lib/i686/cmov/libc.so.6[0xb75e1256]
/lib/i686/cmov/libc.so.6(__libc_malloc+0x95)[0xb75e2655]
Как исправить? Может, вобще сделать по-другому? Жду ответов.