Simple IP address parser in C
Potential bugs

I just spent a few minutes reviewing this, so I'm not sure these are bugs, but you should have a look at them:


The comma operator is not the same as &amp;&amp;. You have this code:

for (int i = 0; i &lt; ipSrcLen, addrIdx &lt; 4; i++) {


but I think you meant to use &amp;&amp; instead of ,. I'm not sure it matters because I'm not sure what the chances are that you will get a mismatch between the string contents and the length, but it's a possible source of error.
Incomplete error checking. In the "invalid digit" section of your loop, you have this check:

if (addrIdx == 3 &amp;&amp; current &gt;= 0) {


but you don't do anything if that condition is not true. If addrIdx is 0, 1, or 2 you don't handle the bad digit, but instead fall through. I think you need to catch those cases and fail gracefully.


IpToString

I mentioned this in the comments, but you know the range of values is small. So there's no reason not to replace your divisions with either a series of if statements or a lookup table. 

Unless you're writing a router or something, I don't expect the lookup table would pay for itself, so the if statements seem to be the way to go. Something like this:

need_tens_0 = FALSE

// hundreds digit
if number &gt;= 100:
    need_tens_0 = TRUE

    if number &gt;= 200:
        *ptr++ = '2'
        number -= 200
    else:
        *ptr++ = '1'
        number -= 100

// tens digit (binary search)
if number &gt;= 50:
    if number &gt;= 80:
        if number &gt;= 90:
            *ptr++ = '9'
            number -= 90
        else:
            *ptr++ = '8'
            number -= 80

// ... buncha cases omitted ...

else if number &gt;= 10:
else:
    // "6" could be 56 or 106 or 216. Check if we need to insert a padding 0
    if need_tens_0:
        *ptr++ = '0'

// Ones digit
*ptr++ = '0' + number