Convert integer to decimal string
Since the function may bail out without computing the result, it must signal the caller that something got wrong. Consider returning an error code.
Since you are dealing with negative numbers, testing for num &gt; 9999999999 is not sufficient.
Along the same line, -num may overflow. 
The lines

    str++;
    *(str - 1) = sign;


are a long way to say

    *str++ = sign;


That said, you seem to force a sign (a whitespace) into the output even for positives. Strictly speaking, it is not an itoa compatible behavior.
memset seems superfluous. *str = 0; after the conversion is done suffices.
I don't think that the benefits of a subtraction loop vs division/modulo are measurable. Did you profile?
The only reason to prefer itoa to sprintf is that the former supports arbitrary conversion bases. It you only need decimal conversion, I strongly recommend to stick with the latter.