Essendo i un intero, str[] un array di char...
i= i * 10 + (str[a]-'0');
Converte la stringa str in numero (i)
Non ho capito però il senso di str[a]-'0'
Il decremento di '0' vuol dire forse convertire il carattere nel rispettivo numerico (in base alla differenza nel sistema ascii) ???