char *str_replace (const char *search, const char *replace, const char *subject){ char tmp_str[1024]; char *metka; if (!strlen(subject) || !strlen(search) || !strlen (replace)) return subject;//не передано всего чего надо if (metka = strstr(subject, search)){ strncpy(tmp_str, subject, metka - subject); tmp_str[metka - subject] = '\0'; metka += strlen(search); strcat (tmp_str, replace); strcat (tmp_str, metka); return strdup(str_replace(search, replace, tmp_str)); }else{ return subject;//ничего не найдено } }Примерно из этого же рода, но здесь 2 ошибки: 1 - возможно переполнения буфера в строке tmp_str и 2 - память течет Вот со второй проблемой я не знаю что делать... :( Может кто подскажет нормальное решение?
|