RE:¿Vómo valida si el argumento es un entero?
Tienes varias posibiidades según el tipo de validación que quieras.
Se supone que lo recibes como un char* en argv[i]
1. La más "chapucera", directamente hacer un atoi (char *). Sea lo que sea el argumento esto te devolvera un entero. Si metes letras, devolvera un 0. Si metes 1.3 te devolvera 1 y si metes un entero, te devolvera el entero.
2. Si quieres una comprobación más exhaustiva, tendrás que hacertela tú. Para ello te pueden ser útiles funciones de C como isdigit(char) que devuelve si el caracter que le pasas es o no un digito. Tendrías que recorrer toda la cadena y para caracter preguntar isdigit(). Quizas el punto decimal tengas que tratarlo aparte. Si miras el man, te saldrán muchas funciones del estilo (isalpha(), isxdigit(), ....)
Espero que te sirva de ayuda.
Se bueno