Verketten der Datei mit dem Pfad, um den vollständigen Pfad in C zu erhalten

Unter Verwendung von C versuche ich, die Dateinamen in einem Verzeichnis mit ihren Pfaden zu verketten, so dass ich stat () für jeden aufrufen kann, aber wenn ich versuche, strcat innerhalb der Schleife zu verwenden, verkettet es den vorherigen Dateinamen mit dem nächsten. Es ändert argv [1] während der Schleife, aber ich habe lange nicht mehr mit C gearbeitet, also bin ich sehr verwirrt ...

#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;
}

Antworten auf die Frage(4)

Ihre Antwort auf die Frage