saber si es un directorio

DIEGO
29 de Mayo del 2005
Hola, necesito saber si una cadena es el nombre de un directorio o de un archivo y no se como hacerlo. Si me podeis ayudar os lo agradeceria. Gracias.

hiei
29 de Mayo del 2005
Cada OS tiene su forma de hacerlo, pero no hay nungun a estandar realmente (POSIX define una pero ni ellos estan convencidos realmente)
La solucion mas "economica" que se me ocurre es esta:

int isdir (char *s)
{
int ok=0;
char curdir[256];
getcwd (curdir, 255);
if (chdir (s)==0) ok=1;
chdir (curdir);
return ok:
}
Que devuelve 1 si el directorio existe.
Deves incluir unistd.h para los sistemas tipo GCC (y/o UNIX) (GCC=DJGPP,DevC++,MingW, etc.) o DOS.H para otros sistemas (o era dir.h????) bueno, no me acuerdo...
En la unica penalizacion en la que incurre esta funcion es en que cambia dos veces de directorio para comprovarlo (lo que es un poco lento, si tienes que comprovar varios juntos, te recomendo que hagas getcwd primero, comprueves todo y luego lo restaurescon chdir...)