Obtener la ruta completa de los archivos en C

Básicamente, este fragmento de código me da los nombres de los archivos en el directorio ... Pero necesito encontrar sus rutas en su lugar ... Intenté usar la función realpath (). Pero lo estoy usando mal, supongo (lo mostré en el código donde quería usarlo). ¿Alguna idea para solucionarlo?. Una cosa más: me da solo nombres de subdirectorios, pero básicamente también necesito obtener las rutas de acceso de sus archivos. Gracias.

#include <stdio.h>
#include <dirent.h>
#include <stdlib.h>
#include <sys/stat.h>
#include <unistd.h>

int main (int c, char *v[]) {
    int len, n;
    struct dirent *pDirent;
    DIR *pDir;
    int ecode=0;
    struct stat dbuf;
    for (n=1; n<c; n++){
        if (lstat(v[n], &dbuf) == -1){
            perror (v[n]);
            ecode ++;
        }
        else if(S_ISDIR(dbuf.st_mode)){
            printf("%s is a directory/n ", v[n]);
        }
        else{
            printf("%s is not a directory\n", v[n]);
        }
    }
    if (c < 2) {
        printf ("Usage: testprog <dirname>\n");
        return 1;
    }
    pDir = opendir (v[1]);
    if (pDir == NULL) {
        printf ("Cannot open directory '%s'\n", v[1]);
        return 1;
    }

    while ((pDirent = readdir(pDir)) != NULL) {
        // here I tried to use realpath()
        printf ("[%s]\n", realpath(pDirent->d_name));
    }
    closedir (pDir);
    return 0;
}

Respuestas a la pregunta(1)

Su respuesta a la pregunta