Red de conocimiento informático - Conocimiento del nombre de dominio - ¿Cómo listar archivos en un directorio usando lenguaje C?

¿Cómo listar archivos en un directorio usando lenguaje C?

Se puede enumerar archivos en un directorio usando lenguaje C mediante la función readdir() en Linux. El proceso de implementación del código es el siguiente:

Abra el directorio

Recorra el directorio y genere los archivos en el directorio.

Puntero de cierre de directorio

Código de referencia:

#Contiene? ltdirent.h gt

#¿Contiene? ltstdio.h gt

int? principal()

{

DIR? * suciedad?

estructura? ¿director? * dp

¿Inmersión? =?opendir(" . ");? //Abrir puntero de directorio

¿Cuándo? ((dp?=?readdir(dirp))?!=?NULL)? {?//Leer el directorio a través del puntero del directorio

printf("s\n ", DP- gt; d_name?

}

( Obsoleto )? cerradodir(dirp);? //Cerrar directorio

¿Volver? 0;

}En Windows, el código es el siguiente:

#Include? ltio.h gt

#¿Contiene? ltstdio.h gt

¿No es válido? printDir(? const? char*? ruta?)

{

estructura? _buscar datos_t? Datos;

¿Dragón? ¿hnd? =?_findfirst(?path,?ampdata? //Busca el primer archivo cuyo nombre coincida con la expresión regular chRE.

¿Y si? (?hnd?lt?0?)

{

error(?ruta?);

}

intnRet? =?(hnd? lt0?)?-1?:?1;

¿Cuándo? (?nRet? gt=?0?)

{

¿Si? (?atributo de datos?==?_A_SUBDIR?)//?Si es un directorio

printf("?[s]*\n ",?data.name?);

Otro

printf("?[s]\n ", data.name?);

n¿Retirado? =?_findnext(?hnd,?amp datos?);

}

_findclose(?hnd?);? //Cerrar el identificador actual

}

¿No es válido? main()

{

printDir("d:/*.*");

}Descripción de la función relacionada:

龙? _findfirst(?char?*filespec,?struct?_finddata_t?*¿información del archivo?);

//?Función? :? Proporciona el primer archivo que coincide con el tipo de entrada especificado por filespec. La función _findnext() se usa generalmente para completar el recorrido de archivos de un determinado tipo.

//?¿Archivo de encabezado? :?#¿Incluir? ltio.h gt

//?Parámetros? :?especificación de archivo? -? Especificación del archivo de destino, puede contener caracteres comodín.

//información del archivo? -?Búfer de información del archivo

//?¿Valor de retorno? :?El identificador de búsqueda único se devolvió exitosamente.

//El error devuelve -1 y establece errno en el siguiente valor:

//ENOENT? No se puede igualar la expresión universal.

//EINVAL? Nombre de archivo no válido

int? _findnext(?Dragon?Handle,?struct?_finddata_t?*¿Información del archivo?);

//?Función? :? Según las reglas de generalización del _findfirst anterior, busque el siguiente archivo que cumpla con la generalización y modifique el valor en fileinfo en función de él.

//?¿Archivo de encabezado? :?#¿Incluir? ltio.h gt

//?Parámetros? :?¿dragón? ¿manejar? -? Identificador de búsqueda (generalmente devuelto por su _findfirst()) anterior

//fileinfo-? Búfer de información del archivo

//?¿Valor de retorno? :?Devuelve 0 con éxito.

//Error devuelto -1

int? _findclose(?Dragon?Handle?);

//?Función? :? Cierre el controlador de búsqueda y libere los recursos correspondientes.

//?¿Archivo de encabezado? :?#¿Incluir? ltio.h gt

//?Parámetros? :?¿dragón? ¿manejar? -? Identificador de búsqueda (normalmente devuelto por _findfirst() antes)

//?¿Valor de retorno? :?Devuelve 0 con éxito.

//Error devuelto -1