2014-10-31 28 views
0

當我使用參數運行我的代碼時,當它位於另一個目錄中時,我無法讀取該文件,就像這樣。使用C++ fstream類在另一個目錄中打開一個文件

在控制檯

./exit first/data.dat second/data.dat 

的代碼是:

#include <fstream> 

int main(int argc, char *argv[]){ 

    const char *In1 = argv[1]; 
    const char *In2 = argv[2]; 

    ifstream fp1; 
    ifstream fp2; 

    fp1.open(In1); 
    fp2.open(In2); 

    if(!fp1 || !fp2){ 
    printf("Error"); 
    } 
    ... 

} 

此外,當參數在同一個目錄中的文件作爲exececutable完美的作品,這樣的:

./exit data1.dat data2.dat 

我嘗試過不同的參數格式,例如:

./exit first\data.dat second\data.dat 
./exit first//data.dat second//data.dat 
./exit first\\data.dat second\\data.dat 
./exit .first/data.dat .second/data.dat 
./exit ..first/data.dat ..second/data.dat 
./exit ../first/data.dat ../second/data.dat 
./exit ..//first//data.dat ..//second//data.dat 

等等

是與fstream有什麼錯誤的也是我給的參數或不同的東西的方式是什麼?

+3

不相關:命名您的程序「退出」可能不是一個好主意。 – 2014-10-31 01:51:06

+0

你有權限訪問這些文件嗎?你提到的路徑是不等於 – nakiya 2014-10-31 01:56:14

+0

@nakiya是的,我有權限讀取和寫入這些文件,如果你指的是'./exit data1.dat data2.dat'只是一個例子,因爲我不能在同一個目錄中命名兩個文件等於 – nnn7867 2014-10-31 02:01:43

回答

0

對不起,我把這作爲一個答案。但答案格式比評論更好。

不管怎麼說,使用PERROR()給你的問題可能是什麼指示......這樣的事:)

#include <stdio.h> 

int main() 
{ 
    FILE * pFile; 
    pFile=fopen ("unexist.ent","rb"); 
    if (pFile==NULL) 
    perror ("The following error occurred"); 
    else 
    fclose (pFile); 
    return 0; 
} 

PERROR(將打印任何錯誤由libc函數中。所以,如果你有權限問題或文件路徑問題,它將被打印出來。

相關問題