Advertisement
Guest User

Untitled

a guest
Nov 21st, 2019
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.22 KB | None | 0 0
  1. void copiere(char* sursa,char* dest)
  2. {
  3. struct stat st; //stats fisiere/foldere
  4. DIR *s=NULL; //directorul sursa
  5. struct dirent *c = NULL; //continutul unui folder
  6. char cs[256],cd[256]; //cale sursa si cale destinatie
  7.  
  8. s=opendir(sursa); //deschidem sursa
  9.  
  10. if(s!=NULL) //daca sursa exista
  11. {
  12. stat(sursa,&st); //aflam drepturile de acces sursa sursei
  13. mkdir(dest,st.st_mode); //cream folderul destinatie cu aceleasi drepturi de acces
  14. while(c=readdir(s)) //citim continutul folderului sursa
  15. {
  16. if(strcmp(c->d_name,".")!=0&&strcmp(c->d_name,"..")!=0) //evitam caile .. si .
  17. {
  18. strcpy(cs,sursa); //cream calea sursa
  19. strcpy(cd,dest); //cream calea destinatie
  20. if(cs[strlen(cs)-1]!='/') //adaugam la cale / in cazul in care nu exista
  21. strcat(cs,"/");
  22. if(cd[strlen(cd)-1]!='/')
  23. strcat(cd,"/");
  24. strcat(cs,c->d_name); //adaugam numele fisierulului/folderului curent
  25. strcat(cd,c->d_name);
  26.  
  27. stat(cs,&st); //verificam daca sursa curenta este folder sau fisier
  28. if(S_ISDIR(st.st_mode))
  29. copiere(cs,cd); //in cazul unui folder reapelam functia curenta recursiv
  30. if(S_ISREG(st.st_mode))
  31. copiere_fisier(cs,cd); //in cazul unui fisier, copiem fisierul
  32. }
  33. }
  34. }
  35. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement