2014-10-31 2 views
0

Когда я запускаю свой код с аргументами, я не могу прочитать файл, когда он находится в другом каталоге, например.Открыть файл в другом каталоге с классом FFI класса C++

В консоли

./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 

Etc.

Что-то не так с fstream или как я даю аргументы или что-то другое?

+3

Несвязанный: Именование вашей программы 'exit', вероятно, не очень хорошая идея. –

+0

У вас есть разрешение на эти файлы, к которым вы пытаетесь получить доступ? Указанные вами пути не равны – nakiya

+0

@nakiya да, у меня есть разрешение на чтение и запись этих файлов, и если вы ссылаетесь на './exit data1.dat data2.dat', это просто пример, потому что i не может назвать два равных файла в одном каталоге – nnn7867

ответ

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 функций. Таким образом, если у вас проблемы с разрешением или проблемы с файлом, он будет распечатан.

Смежные вопросы