Генерация имени временного файла в заданном каталоге - C (СИ)
Формулировка задачи:
Для реализации сабжа есть функция _tempnam. Но вот проблема - имя там генерируется в зависимости от переменной окружения TMP, т.е. далеко не всегда _tempnam будет генерировать уникальное имя в заданном каталоге.
Как же гарантированно генерировать имя именно в нужном мне каталоге?
Решение задачи: «Генерация имени временного файла в заданном каталоге»
textual
Листинг программы
char name[20]; for(i=0; ;i++) { sprintf(name, "t%d.tmp", i); if (access(name, 0)) break; }
Объяснение кода листинга программы
- Объявляется массив
name
типаchar
с размером 20 символов. - Запускается цикл
for
, который выполняется бесконечно. - Внутри цикла происходит формирование имени временного файла с помощью функции
sprintf
. - В качестве первого аргумента
sprintf
используется переменнаяname
, в которую будет записано сформированное имя файла. - В качестве второго аргумента
sprintf
используется строкаt%d.tmp
, где%d
- это заполнитель, который заменяется на значение переменнойi
в текущей итерации цикла. - Осуществляется проверка доступности полученного имени файла с помощью функции
access
. - Если доступ к файлу получен (то есть, файл с таким именем еще не существует), то условие
if
ложно и цикл продолжает выполняться. - Если доступ к файлу не получен (то есть, файл с таким именем уже существует), то условие
if
истинно и цикл прерывается. - После окончания цикла, переменная
name
содержит имя временного файла, которое может быть использовано в дальнейшем.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д