我不知道爲什麼,但我沒有找到問題所在。我運行一個測試來查看它是一個目錄還是一個文件,甚至文件被視爲文件夾。C - 遞歸複製文件
的問題是,當運行循環,即使是文件它進入目錄的過程和postrs「文件1的目錄」
這裏是代碼:
void copie_dossier(char *doss1, char *doss2) {
struct dirent *dptr;
DIR *dp;
struct stat stbuf;
char newDest[strlen(doss2) + 1];
char tempSrc[strlen(doss1) + 1];
strcat(doss2, "/");
strcat(doss1, "/");
strcpy(newDest, doss2);
strcpy(tempSrc, doss1);
stat(doss1, &stbuf);
dp = opendir(doss1);
/*
if (!dp) {
perror("open_dir");
exit(1);
}
*/
if (!(dp))
return;
if (!(dptr = readdir(dp)))
return;
int mk = mkdir(doss2, 0777);
if (mk == -1) {
perror("create_dir");
exit(1);
}
while ((dptr = readdir(dp)) != NULL) {
struct stat stbuf2;
//stat(dptr->d_name, &stbuf2);
char *new = dptr->d_name;
if (!strcmp(dptr->d_name, ".") || !strcmp(dptr->d_name, "..")) {
continue;
}
if (!stat(tempSrc, &stbuf2)) {
if (S_ISREG(stbuf.st_mode)) {
printf("%s for files\n", dptr->d_name);
strcat(newDest, dptr->d_name);
strcat(tempSrc, dptr->d_name);
copy_files(tempSrc, newDest);
strcpy(newDest, doss2);
strcpy(tempSrc, doss1);
}
if (S_ISDIR(stbuf.st_mode)) {
printf("%s for directory \n", dptr->d_name);
strcat(newDest, dptr->d_name);
strcat(tempSrc, dptr->d_name);
copie_dossier(tempSrc, newDest);
strcpy(newDest, doss2);
strcpy(tempSrc, doss1);
}
}
}
closedir(dp);
}
你的錯誤信息是什麼? – zx485
請搜索一下。關於如何遞歸地在本網站上單獨輸入目錄的例子有數以千計的例子,更不用說整個互聯網,其中可能有數百萬例子。 –
基本上代碼運行良好......但測試認爲文件是文件夾,所以它沒有做什麼與他們 – Ch1234