Exacto, si tu lees una cadena, y quieres comprobar si es un número, tienes que comprobar que todos sus dígitos sean números.
Ejemplo:
te introducen 65536 y lo lees como cadena de caracteres , el contenido de dicha cadena es:
- cad[0]='6' 
- cad[1]='5' 
- cad[2]='5' 
- cad[3]='3' 
- cad[4]='6' 
- cad[5]='\0' 
mientras, que si tu lo lees como un entero, simplemente es un entero que tiene el valor 65536.
Si tu estás leyendo números como cadenas, y te preocupa que te puedan colar cosas como asd345:
representado como:
- cad[0]='a' 
- cad[1]='s' 
- cad[2]='d' 
- cad[3]='3' 
- cad[4]='4' 
- cad[5]='5' 
- cad[6]='\0' 
Utilizas isdigit para cada carácter o lo que he comentado yo antes.