2012-01-11 3 views
3

Файл открывается с помощью функции fopen(), когда я предоставляю относительный путь. Я запускаю этот код на оконной машине с Visual Studio 2010.Ошибка открытия файла с относительным путем

const char* OUTPUT_FILE = "output/PERFORMANCE.txt"; 
FILE* f = fopen(OUTPUT_FILE, "w"); 

Означает ли этот путь неправильный путь? Должен ли я использовать разделитель «\»?

Указание абсолютного пути с использованием того же формата отлично работает. (например, «C: /output/PERFORMANCE.txt»)

+0

Он должен работать. Вопрос в том, что? Каков ваш рабочий каталог? – Mysticial

+2

Запустится каталог '.exe', который может быть не таким, каким вы его ожидаете. Тогда ваш относительный путь был бы неправильным. –

+0

Когда я указываю OUTPUT_FILE как «PERFORMANCE.txt», новый файл создается в том же каталоге, что и .exe. Поэтому я думаю, что рабочий каталог совпадает с каталогом .exe. – arjunurs

ответ

0

Имеется ли подкатегория output? Открытие файла для записи создаст файл, если он не существует, но не путь к нему. .

+0

Да, существует выходной каталог – arjunurs

2

Проверьте, что каталог вы в настоящее время с Windows, есть по крайней мере два способа:

  1. _getcwd
  2. GetCurrentDirectory

Убедитесь, что вы находитесь в каталоге вы думаете, вы, и убедитесь, что каталог output существует в каталоге, иначе вам нужно его создать. В операционной системе Windows, есть по крайней мере два способа:

  1. _mkdir
  2. CreateDirectory

Файл будет не в состоянии открыть (даже для записи), если какие-либо промежуточные каталоги не присутствуют. Файл также может не открыться, если у вас нет прав на целевой каталог.

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