簡體   English   中英

C++/C:將目錄移動到另一個位置

[英]C++ / C: Move Directory to Another Location

我想將一個目錄的內容移動到另一個目錄。 我通過命令行參數指定源目錄和目標目錄。 這是代碼:

#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++ 編譯得很好,運行時沒有錯誤,但它根本不移動任何東西。 關於可能出什么問題的任何想法?

編輯:這是指原始帖子,其中讀取FILE * src = opendir( argv[1] ); .

函數opendir()返回一個DIR * ,它與FILE *完全不同(並且不能用作getc() / putc()

您必須使用readdir()從該DIR *讀取目錄條目,這將產生一個文件名,然后使用該信息復制該文件。

編輯:這是指更新后的帖子。

您不在目錄上使用文件函數( fopen()getc()等)。 要走的路是opendir()后跟readdir() ,然后對產生的文件名進行操作。

我真的不知道為什么目錄上的fopen()實際上返回一個非空指針。 就個人而言,我認為這是一個設計缺陷,因為FILE *上可能的操作不是為目錄定義的。 我會留清楚此構造。


一般來說,您應該閱讀您正在使用的函數的文檔(手冊頁),而不是(錯誤地)假設它們的相關信息。 當你在做的時候,也檢查返回值 - 他們可能會告訴你為什么事情沒有按預期工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM