#c #visual-c #file-io
#c #visual-c #file-io
Вопрос:
У меня возникли проблемы с использованием fopen() с относительным путем. Я хотел использовать fopen следующим образом:
fopen("\Saurabh\pqrs.txt");
я получаю указатель filePointer как null.
Ситуация возникла из-за того, что я пытаюсь создать проект установки или развертывания, который должен читать файлы. Пути к файлам, выбранные по умолчанию после выполнения пользователем setup, следующие C:Program ФайлыНастройка.. (где exe сбрасывается). Итак, я сбросил файлы в ту же папку и указал путь (фиксированный путь или жестко заданный) к этим файлам в программе.
Если пользователь выбирает какой-либо другой путь для установки, программа завершается с ошибкой.
Могу ли я как-нибудь это исправить?
Ответ №1:
Две проблемы:
- Вам нужно экранировать символ обратной косой черты. Запись
\
. - Вам нужно использовать относительный путь. Начиная путь с
\
вы имеете в виду начать с корневого каталога.
Собрав их вместе, я думаю, вам следует написать:
fopen("Saurabh\pqrs.txt");
Ответ №2:
Убедитесь, что вы удваиваете
символы. Строка, которую вы передаете, должна быть "Saurabh\pqrs.txt"
. Обратите внимание, что начало пути с \
означает, что он не является относительным. (Ну, на самом деле это относительно вашего текущего диска, но я сомневаюсь, что это то, что вы ищете.)
Комментарии:
1. Я думаю, для дополнительной ясности, возможно, стоит ввести a
.
в путь к каталогу, чтобы на 100% было ясно, что вы начинаете с текущего каталога. (В данном случае это было быfopen(".\Saurabh\pqrs.txt")
) В некоторых системах начало с косой чертой имеет последствия.2.
"C:\Saurabh\pqrs.txt"
это абсолютный путь; OP говорит, что он хочет использовать относительный путь.