Code-Schnipsel
Moderatoren: broesel, Martin Conrad, PatrickThema: substr() & Co.
[EDIT] - Re: substr() & Co.
scusi71 am 29.10.2008 um 20:56
der folgende Code sollte eigentlich eine Overflow verhindern. Allerdings hast Du als C89er natürlich kein SIZE_MAX, aber dafür findest Du sicher eine Lösung.
size_t size = strlen(haystack)
if (m)
{
const size_t needles_size = strlen(needle);
const size_t replace_size = strlen(replace);
if (replace_size < needles_size)
{
size -= m * (needles_size - replace_size);
}
else if (replace_size > needles_size)
{
const size_t diff = replace_size - needles_size;
if (diff > (SIZE_MAX - size) / m)
{
// Overflow
return 0;
}
size += m * diff;
}
}
return size;
