La Web del Programador: Comunidad de Programadores
 
    Pregunta:  20815 - OBTENER TAMAÑO DE DIRECTORIO O CARPETA
Autor:  Jose Suttrun
Quisiera conseguir el codigo de programa en C/C++ y compatible con el estandar de C para determinar el tamaño total (en Bytes o Mbytes) de una carpeta con sus archivos y subdirectorios. De antemano gracias a quienes puedan ayudar.

  Respuesta:  Juan Carlos Ruiz
bueno,

#include <dirent.h>

funciones:

seekdir(DIR * dir, long loc);mueve el puntero de u directorio el numerop de bytes especificos., no devueklve nada.

telldir(DIR *dir);//devuelve un valor long con la posicion actual del puntero dentro del directprio en bytes

La posicion inicial en el directorio es 0, asi que debes hacer un ciclo donde te despaces de a 1 byte dentro del archivo, y de alguna manera controlar con algun valor que devuelva telldir o un errno que genere seekdir , que se ha llegado al final del directorio,
una vez hecho esto sabras que el ultimo byte de posicion del directorio sera el tamaño total del archivo.
espero que te sirva de algo , la verdad no lo he probado y puede resultar mas dificil de lo que parece; debes tener en cuenta que estas funciones no cumplen con el standart ansi ni tampoco con poxis asi que es probable que no funcione en todos los compiladores, o que solo corran en UNIX o LINUX y no en windows o viceversa.
Esta funcion creo que funcionara porque en linux no existe la forma de encontrar el tamaño de un archivo de la manera tradicional asi que hice con el archivo lo mismo que te digo que hagas con el directorio, pero obviamente con las funciones para archivos.(bueno , despues descubri una forma mas facil de hacerlo en linux).