Я искал онлайн, чтобы решить вышеупомянутую проблему без успеха . Я опишу этот вопрос более подробно ниже.Двойной клик Скомпилированный C++ Unix Executable не открывает существующий файл для чтения информации От
Моя программа содержит только один файл .cpp. Программа должна отображать текст из «test.txt», если этот файл открыт. В противном случае он должен отобразить сообщение «Не удалось открыть ...». Ниже приведен выпуск:
Открываем терминал, переходим в каталог, содержащий мой файл, скомпилируем и запустим с помощью обычных команд: «g ++ main.cpp» и «./a.out». Когда я запускаю свою программу таким образом, используя терминал напрямую, программа работает правильно. Он отображает текст, когда текстовый файл существует, и выводит ошибку, когда он не существует. Когда я дважды щелкните исполняемый файл unix «a.out», хотя текстовый файл существует и вставлен рядом с исполняемым файлом, программа отображает сообщение «Не удалось открыть ...». Я не знаю, что думать в этот момент. Должен ли код содержать что-нибудь еще, кроме того, что ниже?
Операционная система: OS X 10.9.5
#include <iostream>
#include <fstream>
using namespace std;
const int MAX_CHAR_READ = 100;
int main(int argc, const char * argv[])
{
ifstream read_file;
cout << endl << endl;
//Allocate dynamic memory
char * file = new char[strlen("test.txt") + 1];
char * text_line = new char[MAX_CHAR_READ + 1];
strcpy(file, "test.txt");
//Attempt to open a file for reading
read_file.open(file);
if(read_file.is_open() == true)
{
cout << "File: " << file << " is open!" << endl;
read_file.get(text_line, MAX_CHAR_READ, ';');
cout << text_line << endl;
read_file.close();
}
else
cout << "Failed to open: " << file << endl;
cout << endl << endl;
//Deallocate dynamic memory
delete [] file;
delete [] text_line;
return 0;
}
Программа пример выполнения с помощью терминала вручную:
$ cd Desktop/Other/Test
$ g++ main.cpp
$ ./a.out
File: test.txt is open!
Hello World!
$
пример выполнения программы, дважды щелкнув один и тот же исполняемый файл:
$/Users/vladimirmeshcheryakov/Desktop/Other/Test/a.out ; exit;
Failed to open: test.txt
logout
[Process completed]
Подсказка программы, вероятно, не является тестом и поэтому не может найти файл test.txt. –
Исполняемый файл запускается из одного и того же каталога по-разному: напрямую с помощью терминала или двойного щелчка. Не понимаю ли я «запущенный каталог»? –
Непонятно, что работает подкаталог при двойном щелчке. Вы можете проверить, распечатав текущий каталог, а также попытаться получить доступ к файлу, используя полный путь. –