2014-10-31 64 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函数中。所以,如果你有权限问题或文件路径问题,它将被打印出来。

相关问题