2012-06-15 116 views
1

對文件系統操作有疑問:在執行我們的程序的其他目錄中打開一個文件。假設我們在以下目錄中執行我們的程序:/ home/example,我們希望程序轉到另一個目錄,比如:home/example/Inside/Test,並打開最後一個目錄中的所有txt文件。C打開一個文件在不同的目錄中閱讀

確定這樣一個小代碼:

/*variables*/ 
    struct dirent *strdir; 
    DIR *diro; 
    struct stat statbuffer; 
    char *path = /home/example/Inside/test 

    diro = opendir(path) 
    /*cheked it opened properly*/ 
    while ((strdir = readdir(diro)) != NULL){ 
    stat(strdir->d_name, &statbuffer);   /*Gets information of file*/ 
    if (S_ISREG(statbuffer.st_mode)){ 
     /*its regular type*/ 
     /*check its of type txt*/ 
     ??? 

我把???因爲我用的fopen,它不工作。當然不會,因爲該文件不存在於/ home/example中。同樣適用於開放。

所以我吼聲,也許我可以連接的目錄和文件名到一個單一的字符,以獲得完整的路徑,但聽起來有點難看......

另一個想法是利用所給的信息統計數據給我,但我似乎無法弄清楚如何使它工作。硬鏈接?

+2

安置自己的實際代碼,請,而不是你先製作或改變的東西。如果出於安全原因必須更改,請更改必要的最小值。發佈虛假代碼就像去你的汽車修理店一樣,並說「我的汽車有什麼問題?我沒有帶它,但它看起來有點像停在那裏的那個,它製造的有趣的聲音有點像一輛剛剛開過的那輛車。「 –

回答

0

看來無論你爲這個函數指定的參數都需要是一個字符串。

opendir(/home/example/Inside/Test) 

參見這太問題Open directory using C

+0

是的,我只是這樣說,讓它更容易理解。 – Alessandroempire

+5

@Alessandroempire故意忽略必要的語法只會使問題更難診斷... – Levon

0

如果你不想把目錄名稱上的路徑(這可能是做正確的事情),打電話chdir("/home/example/Inside/Test");

+0

實際上,我雖然關於把完整的路徑名。但是如何?連接目錄和文件名? – Alessandroempire

+0

@Alessandroempire確實如此。 –

+0

謝謝!完美的作品!輕鬆解決。 – Alessandroempire

相關問題