2013-05-03 2 views
2

Я использую fopen(), и мне нужно открыть файл, где я передаю путь с пробелом в нем как аргумент. Вот мой код:Можем ли мы передать строку пути с пробелами в ней в качестве аргумента функции fopen()?

FILE * pFile; 
pFile = fopen ("\this folder\myfile.txt","w"); 

Будет ли это работать как таковой, или мне нужно добавить что-то там, чтобы распознать пространство? Спасибо.

+1

Почему бы вам просто не попробовать? –

+3

Лучшее, что можно было бы точно узнать, это попробовать (подсказка: он будет работать, если вы замените '\\' на '\\\' s, иначе первый символ будет 'TAB'). – dasblinkenlight

+0

Я просто хотел убедиться, что это не вызовет проблемы в первую очередь. Я чувствовал, что это был довольно простой вопрос. – Tommy

ответ

3

пространства будет работать, но вам нужно бежать '\', хотя, как

pFile = fopen ("\\this folder\\myfile.txt","w") 
+0

awesome, спасибо! – Tommy

3

Там нет ничего особенного, что нужно сделать, если путь содержит пробелы.

pFile = fopen ("\\this folder\\myfile.txt","w"); 

Должно работать. Обратите внимание на требуемые двойные обратные черточки в строках.

0

не pFile = fopen ("\ this folder \ myfile.txt", "w");

должно быть pFile = fopen ("\ this folder \ myfile.txt", "wb");

+0

Вы должны заменить '\' на '\\' для пути. –

0

Рассмотрим: rawurlencode()

Если вы пытаетесь загрузить внешний ресурс, такой как http://domain.com/path/to/file/filename has spaces.php то вам, возможно, потребуется для кодирования URL, чтобы избежать fopen() из строя.

В этом случае вы должны на самом деле позвонить rawurlencode(), поскольку это преобразует все необходимые символы в %XY символов, включая пробелы. Обычный urlencode() преобразует пробелы в +, что не поможет.

Предостережение: Я не тестировал это в расширенном списке символов, чтобы он мог создать другой набор проблем, но он работал для меня во всех случаях, которые я мог найти.

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