Buenas...<br><br>Por qué este código no diferencia entre archivos y directorios,  el if siempre sale true.<br><br>En el archivo de salida se ve que siempre me devuelve 16895 tanto para ficheros como directorios<br><br>/+++++++++++++++++++++++++++++++++++++++/
<br><br>#include <dirent.h><br>#include <stdlib.h><br>#include <stdio.h><br>#include <sys/stat.h><br>#include <iostream><br><br>using namespace std;<br><br>int main(int argc, char * argv[])<br>
{<br>    DIR *pdir;<br>    struct dirent *pent;<br>    struct stat datosFichero;<br>    int fd;<br>    FILE * salida;<br>    <br>    salida = fopen("Ruta para el fichero de salida\\Salida.txt", "w+");<br>
    pdir=opendir("Directorio");<br>    <br>    while ((pent=readdir(pdir)))<br>    {<br>        stat (pent->d_name, &datosFichero);<br>        if (S_ISDIR (datosFichero.st_mode)!=0) <br>            cout << "[" << pent->d_name << "] es un directorio\n" << endl;
<br>        else           <br>            cout << "[" << pent->d_name << "] es un archivo\n" << endl;<br>            <br>            fprintf(salida,"[%s] es [%hd]\n", pent->d_name, 
datosFichero.st_mode);<br>    }<br> fclose(salida);<br>closedir(pdir);<br>    cin.get();<br>    return 1;<br>}<br><br><br>/+++++++++++++++++++++++++++++++/<br><br>Gracias<br>