atoi shouldn't be necessary, because all you have to do is deal with the individual chars in the array.
Lets say you read things into: char a[32], and you want to get things into int b[32]
b=((int)a)-*offset*) where *offset* is what you need to convert the ascii number of the digits into the number.
If you use atoi to put the contents of char a[32] into an integer, lets say int c, then if the value of the number you've just read exceeds the maximum value for your data type (int, unsigned int, long int, whatever...) then you will have problems. I'm assuming that the whole point of the assignment is to work with numbers that have larger values than can be accomodated by the commonly used data types.
edit:
..