Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > fopen не понимает относительный путь


Автор: ksili 13.4.2009, 11:13
надо открывать файл, находящийся в папке с программой.
Код

std::string fname;
FILE *f;

f = fopen(fname.c_str(),"rt");

Если fname равно просто "in.txt", то не открывает - ERROR_FILE_NOT_FOUND. Если указать что-нибудь типа "D:\\in.txt", то файл открывается. 
Пишу в студии. Пробовал in.txt помещать и в папку с exe-шником и в папку с солюшеном и просто на диск C или D. Пока не укажешь полный путь - не находит файл. Раньше (при работе не в студии) таких проблем кажется не испытывал. Может я что-то не так делаю?

P.S. приложение консольное Win32 API

Автор: azesmcar 13.4.2009, 11:17
ksili
1. выведи GetCurrentDirectory - посмотри что там и скопируй файл в эту директорию
2. попробуй запустить программу не из студии а из папки

Автор: ksili 13.4.2009, 11:31
Цитата(azesmcar @  13.4.2009,  15:17 Найти цитируемый пост)
1. выведи GetCurrentDirectory - посмотри что там и скопируй файл в эту директорию

GetCurrentDirectory показал, что при запуске из-под студии текущей директорией является не папка с солюшеном или exe-шником, а папка с исходником. Странно. потом же программа должна работать безо всякого исходника...
Цитата(azesmcar @  13.4.2009,  15:17 Найти цитируемый пост)
2. попробуй запустить программу не из студии а из папки

да, так нашёл файл из своей папки. 

Автор: azesmcar 13.4.2009, 11:40
ksili

Студия меняет текущую директорию при запуске, скопируй файл в папку с сорсами для тестировки..в релизе при нормальном запуске он будет читать из текущей (т.е. из той же папки где и сам екзешник). Если конечно на shortcut не изменить Start In

Автор: xvr 13.4.2009, 15:35
Цитата(ksili @ 13.4.2009,  11:31)
Цитата(azesmcar @  13.4.2009,  15:17 Найти цитируемый пост)
1. выведи GetCurrentDirectory - посмотри что там и скопируй файл в эту директорию

GetCurrentDirectory показал, что при запуске из-под студии текущей директорией является не папка с солюшеном или exe-шником, а папка с исходником. 

Неа, папка с проектом. Это единственное более менее постоянное место -
  •  Папка с exe'ником будет меняться от конфигурации проекта (как минимум Debug/Release)
  •  Папок с исходниками может быть много даже в одном проекте
  •  Папка с солюшеном так же не постоянна - проект может входить в несколько разных солюшенов, да и в одном солюшене может быть несколько проектов, не мешать же все в кучу  smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)