SOLUCION
Al final el ejecutable tiene que ser multi-funcional, es decir, servir para varias apps distintas que le van a invocar, de ahí la necesidad de comprobar que cada argumento sea uno valido antes de operar con él.
Se puede hacer lo siguiente:
Código:
if ((argv[x] != NULL)&&(argv[x] != INVALID_HANDLE_VALUE))
{
...
}
Con
NULL se comprueba que el puntero argv[x] no sea 0x00000000 y con
INVALID_HANDLE_VALUE, que no sea 0xFFFFFFFF, ambas palabras reservadas del sistema (Windows).
Así pues sólo se opera con el puntero sí este no es nulo y es valido.