我试图将一个包含其所有内容的目录移到另一个目录中,而且我被卡住了。我试图将每个文件从源目录复制到目标文件,然后将其删除。我也被困在这里了。但是我可以用rename()
函数做某种事。如果是,怎么样?
代码更新
void move_file(const char *name, const char *new_name) {
size_t len = 0;
char *buffer;
long lSize;
FILE *source = fopen(name, "r");
FILE *target = fopen(new_name, "w");
if (source == NULL || target == NULL) {
fprintf(stderr, "Error occurred when opening files\n");
exit(1);
}
fseek(source, 0, SEEK_END);
lSize = ftell(source);
rewind(source);
buffer = (char*)malloc(sizeof(char) * lSize);
result = fread(buffer, 1, lSize, source);
if (result != lSize) {
fprintf(stderr, "Reading error\n");
exit(2);
}
fwrite(buffer, 1, sizeof(buffer), target);
fclose(source);
fclose(target);
if (!remove(source)) {
fprintf(stderr, "Error deleting file\n");
}
}
我的第二个功能。
void move_directory(const char *target, const char *destination) {
DIR *dir = opendir(target);
if (dir) {
char Path[256];
char *EndPtr = Path;
struct dirent *e;
strcpy(Path, target);
EndPtr += strlen(target);
while ((e = readdir(dir)) != NULL) {
struct stat info;
strcpy(EndPtr, e->d_name);
if (!strcmp(e->d_name, ".") || !strcmp(e->d_name, "..")) {
continue;
}
if (!stat(Path, &info)) {
if (S_ISDIR(info.st_mode)) {
move_directory(Path);
} else
if (S_ISREG(info.st_mode)) {
move_file(e->d_name, e->d_name);
}
}
}
}
}
我被困了,我不知道如何继续下去。这就是我到目前为止所做的。
更新:我现在如何专注于我的目标文件夹并创建一个与我目前所处的文件夹完全相同的文件夹,我的复制文件应该移到哪里?
答案 0 :(得分:3)
我对C IO库不是很了解,但我可以指出一些问题
char Path[256]
,source_file[20]
,target_file[20]
。