Генерация имени временного файла в заданном каталоге - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Для реализации сабжа есть функция _tempnam. Но вот проблема - имя там генерируется в зависимости от переменной окружения TMP, т.е. далеко не всегда _tempnam будет генерировать уникальное имя в заданном каталоге. Как же гарантированно генерировать имя именно в нужном мне каталоге?

Решение задачи: «Генерация имени временного файла в заданном каталоге»

textual
Листинг программы
char name[20];
for(i=0; ;i++) {
  sprintf(name, "t%d.tmp", i);
  if (access(name, 0)) break;
}

Объяснение кода листинга программы

  1. Объявляется массив name типа char с размером 20 символов.
  2. Запускается цикл for, который выполняется бесконечно.
  3. Внутри цикла происходит формирование имени временного файла с помощью функции sprintf.
  4. В качестве первого аргумента sprintf используется переменная name, в которую будет записано сформированное имя файла.
  5. В качестве второго аргумента sprintf используется строка t%d.tmp, где %d - это заполнитель, который заменяется на значение переменной i в текущей итерации цикла.
  6. Осуществляется проверка доступности полученного имени файла с помощью функции access.
  7. Если доступ к файлу получен (то есть, файл с таким именем еще не существует), то условие if ложно и цикл продолжает выполняться.
  8. Если доступ к файлу не получен (то есть, файл с таким именем уже существует), то условие if истинно и цикл прерывается.
  9. После окончания цикла, переменная name содержит имя временного файла, которое может быть использовано в дальнейшем.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 3.833 из 5
Похожие ответы