¿Conoces los comandos del intérprete de windows? ¿O sea MSDOS? Quiero suponer que si. Lo que tiene que hacer tu programa es ejecutar un comando del intérprete (corazón) del sistema operativo. El comando para que enliste los archivos .DAT de un directorio es:
DIR C:\\DIRECTORIO\\ *.DAT
En C y C++ es necesario escribir dos veces la \ cuando quieras que lea \
Existe una biblioteca de C que se llama dos. H que contiene una función que se llama system() a esa le mandas el comando así:
system ("DIR C:\\DIRECTORIO\\ *.DAT");
Ahora bien, me encontré una referencia de otras bibliotecas en este sitio que aparentemente contienen funciones específicas para ejecutar comandos del sistema operativo, si quieres chécalas, pero necesitas tener esas bibliotecas en tu computadora
http://www.mhe.es/universidad/informatica/8448146433/archivos/c++f.pdf. y no se dónde las puedas obtener porque no son del estándar.
Todos los sistemas operativos tienen un intérprete de comandos, es el que usa la interface de ventanas, que en este caso es windows cualesquiera versión; en el caso de unix hay varias una de las más comunes es solaris. La interface de ventanas nos permite ejecutar comandos con el mouse. Pero si haces un programa para que ejecute comandos entonces tienes que saber los comandos y usar una función que los ejecute.
En el caso de C las bibliotecas se estandarizaron hace muchos años, para poder usarlas en cualquier sistema operativo. El estándar es el ANSI y la biblioteca dos. H es del estándar.
Espero haberte podido ayudar. De cualquier forma si necesitas más información, con gusto intento ayudarte, las veces que sea necesario.