C++ / C: 移动目录到另一个位置

1 人关注

我想把一个目录的内容移到另一个目录。我通过命令行参数指定源目录和目标目录。下面是代码。

#include <stdlib.h>
#include <stdio.h>
void move_dir(FILE *src, FILE *dest) {
    int c = getc(src);
    while(getc(src)!=EOF) {
        putc(c,dest);
int main(int argc, char* argv[])
    FILE *src=fopen(argv[1]);
    FILE *dest=fopen(argv[2]);
    while(--argc>0) {
        if(src!=NULL && dest!=NULL) {
            move_dir(src,dest);
    fclose(src);
    fclose(dest);
    return 0;
./a.out /Folder1/Folder2/Source /Folder1

这将把名为Source的文件夹移到Folder1里面。 然而,当我执行这段代码时,它并不工作。它用g++编译得很好,运行时也没有错误,但它根本就没有移动任何东西。有什么办法可以解决这个问题吗?

3 个评论
你应该养成用 g++ -Wall -g 编译的习惯。
你想制作相当于 mv 的命令吗?不同文件系统上的目录怎么办?
c
linux
file
unix
directory
Charlie Yabben
Charlie Yabben
发布于 2012-10-09
1 个回答
DevSolar
DevSolar
发布于 2012-10-09
已采纳
0 人赞同

Edit: 这是指原来的帖子,上面写着 FILE * src = opendir( argv[1] );

函数 opendir() 返回一个 DIR * ,它与 FILE * 完全不同(并且不能作为 getc() 的参数使用)。/ putc() 的参数。

你必须使用 DIR * 从该 readdir() 读取目录条目,这将产生一个文件名。 then 使用这些信息复制该文件。

Edit: 这是指更新后的帖子。

你不要在目录上使用文件函数( fopen() getc() 等)。应该使用 opendir() ,然后是 readdir() ,然后对产生的文件名进行操作。