Better would be to say

    for (i=0; i < n; i++)
         buffer + i * srcLen;

For two reasons
- the compiler is more likely to spot it as a special case
- you will make better use of the processor cache always assigning in ascending byte order, rather than back and forwards

(Repeating strings lots of times you *might* be able to spot a minor difference!)