Как открыть этот файл?

Наш учитель информатики дал нам проект по созданию полнофункционального консольного приложения на C ++. И я начал это делать. Но я застрял в какой-то момент. Я хочу открыть редактируемый текстовый файл (.txt), используя функцию open (). Но я сделал отдельную папку для всех текстовых файлов. Итак, я знаю, что мне нужно предоставить полное имя каталога в функции open (), которая в моем случае называется «F: \ My Work \ C ++ \ My School Project \ Text Files». Но что, если я скопирую папку «Мой школьный проект» в pendrive и отнесу ее к дому моего друга и попытаюсь запустить программу на его компьютере. Это будет работать??? Я имею в виду, что нет необходимости, чтобы у него была папка «Моя работа» в папке «F» или, возможно, у него не было диска «F». Так что в этом случае адрес изменится. Так какой адрес мне нужно ввести в функции open (), чтобы программа работала на каждом компьютере без изменения адреса в функции open () каждый раз, когда я пытаюсь запустить программу на другом компьютере ... Исходный код может быть полезно с объяснением ... Спасибо !!!

c++
4 голоса | спросил radiantshaw 3 72013vEurope/Moscow11bEurope/MoscowSun, 03 Nov 2013 14:03:31 +0400 2013, 14:03:31

2 ответа


0

Вместо использования абсолютных путей вы должны использовать относительные пути. Когда вы запускаете программу из папки, это ваш рабочий путь. Затем вы можете открывать файлы в этой папке или подпапках этой папки, передавая только имя файла или папку и имя файла в функцию открытия. Поэтому вместо открытия C:\... просто откройте someFolder\someFile.txt .

ответил Sven Painer 3 72013vEurope/Moscow11bEurope/MoscowSun, 03 Nov 2013 14:07:18 +0400 2013, 14:07:18
0

Вы могли бы рассмотреть имя файла, который вы анализируете, как часть аргумента командной строки, например:

int main(int arg, char* args[]) {

   FILE *newfile = fopen( args[1], "r");

}

Вы не можете быть уверены, что на всех компьютерах диск F: правильно сопоставлен, поэтому его лучше использовать Универсальные соглашения об именах (UNC), т. Е. "\ Server \ share \ path \ file".

Хороший способ добиться того же - использовать Boost Filesystem, но это усложняет ваш код, поскольку вы зависите от внешней библиотеки (читай: студенты могут быть сбиты с толку). Документация по файловой системе Boost находится здесь: http: //www.boost.org/doc/libs/1_43_0/libs/filesystem/doc/index.htm

ответил Damian 3 72013vEurope/Moscow11bEurope/MoscowSun, 03 Nov 2013 15:18:05 +0400 2013, 15:18:05

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132