Concatenando arquivo com caminho para obter o caminho completo em C

Usando C, estou tentando concatenar os nomes de arquivos em um diretório com seus caminhos para que eu possa chamar stat () para cada um, mas quando tento usar strcat dentro do loop, concatena o nome do arquivo anterior com o próximo. Ele está modificando o argv [1] durante o loop, mas eu não trabalho com C há muito tempo, então estou muito confuso ...

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

int main(int argc, char *argv[]) {
 struct stat buff;

 int status;

 if (argc > 1) {
  status = stat(argv[1], &buff);
  if (status != -1) {
   if (S_ISDIR(buff.st_mode)) { 
     DIR *dp = opendir(argv[1]);
     struct dirent *ep;
     char* path = argv[1];
     printf("Path = %s\n", path);

     if (dp != NULL) {
       while (ep = readdir(dp)) {
       char* fullpath = strcat(path, ep->d_name);
       printf("Full Path = %s\n", fullpath);
     }
     (void) closedir(dp);
   } else {
      perror("Couldn't open the directory");
   }
 }

  } else {
   perror(argv[1]);
   exit(1);
  }
 } else {
   perror(argv[0]]);
                exit(1);
 }

 return 0;
}

questionAnswers(4)

yourAnswerToTheQuestion