быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,679
|
||||||
1 | ||||||
Почему БЕЗОШИБОЧНО создаётся файл, а его не видно?18.04.2011, 22:58. Показов 3633. Ответов 30
Метки нет (Все метки)
Друзья! Вот простой код, создаётся файл, а имя для него генерит функция
tmpnam; Но файла не видно! Ни после выполнения программы ни в процессе (перед закрытием). никак, все каталоги перерыл. Чё-то я не понимаю, чё за файл такой? И где его можно применить? Что касается временных файлов, то есть функция tmpfile, она создаёт ВРЕМЕННЫЕ файлы. Что это значит, я не вникаю, но , если файл созданный с помощью tmpfile будет вести себя страно, будет невидимым, я не удивлюсь. ...tmpnam же по сути просто-напросто генерит строку символов, не совпадающую ни с одним из названием файлов, которые есть в текущем каталоге. Всё! И не больше. Так нет же, tmpnam(tmpstr) возвращает указатель, применяя который как название файла, файл невидим. Чё-то ребята я не пойму, это так задумано создателями?
0
|
18.04.2011, 22:58 | |
Ответы с готовыми решениями:
30
Объект QDialog создается но его не видно Почему не создаётся файл и не производится запись в пустой файл? Почему не создается файл? Почему не создается файл? |
Модератор
12458 / 7482 / 1753
Регистрация: 25.07.2009
Сообщений: 13,762
|
|
19.04.2011, 17:34 | 21 |
В каком смысле "хоть бы сделали"? В том же мелкомягком stdio.h:
Код
_CRT_NONSTDC_DEPRECATE(_tempnam) _CRTIMP char * __cdecl tempnam(__in_z_opt const char * _Directory, __in_z_opt const char * _FilePrefix);
0
|
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,679
|
||||||
19.04.2011, 17:58 [ТС] | 22 | |||||
fasked,
easybudda, А мне казалось, я убедил вас, что написать можно всё, что угодно.. Можно написать что рабочей директория считается текущая, а рабочей будет корневой каталог диска... Ну что ж ещё раз, из MSND
Создаёт временное имя файла во временной же директории... ТО есть я ЯВНО указываю директорию, а при создании имени файла берётся за основу ЛЕВАЯ директория, я в неё в жизни не лазил и щас не хочу, я хочу работать в ТЕКУЩЕЙ, а они мне подсовывают непонятно что. C:\DOCUME~1\user\LOCALS~1\Temp\2\stq2 is safe to use as a temporary file. ...Нет, ну смешно же. Мы проверяем на наличие имён файлы директории X (в данном случае c:\\tmp ), а создаём такой файл для диретории Y Вот и проверяли бы Y на наличие таких файлов.
0
|
19.04.2011, 18:32 | 23 |
Я могу Вас понять, но читать лучше само описание, а не комментарии к коду (это еще раз доказывает, что излишние комментарии зло). На этой же самой странице описаны параметры функций:
С этим понятно? То есть, Вы можете стереть все переменные среды окружения и радоваться Ниже (в этой же статье написано еще раз): Если переменная среды окружения TMP определена и установлена как валидный путь к директории, то уникальные имена файлов будут сгенерированы для директории определенной в TMP. Если TMP не определена или установлена как имя несуществующей директории, _tempnam будет использовать параметр dir как путь для которого будут сгенерированы уникальные имена. Если TMP не определена или установлена как имя несуществующей директории и если параметр dir равен NULL или имени директории, которой не существует, то _tempnam будет исопльзовать текущую рабочую директорию для генерации уникальных имен. В настоящее время, если и TMP и dir указывают на директории, которых не существует, вызов _tempnam завершится с ошибкой. В общем все сложно с этой функцией у мелкомягких, как и со всеми остальными POSIX функциями. Однако, я все равно не могу понять причины. Для чего создавать файл в директории с программой, если он все равно временный?
1
|
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,679
|
|
19.04.2011, 18:44 [ТС] | 24 |
Ну всё ясно, короче. Всё плохо.
...Файл-то не временный в то-то и дело. Он может быть и постоянным. Просто используется такая функция, а так-то его можно и не удалять; а сам он точно не удалится. Практическое применение этой функции- меньше заморочек с именами. Тем более, можно ведь давать имена файлам более или менее осмысленные, если использовать префикс. Но это, кажись, уже в мечтах.
0
|
Модератор
12458 / 7482 / 1753
Регистрация: 25.07.2009
Сообщений: 13,762
|
|
19.04.2011, 19:36 | 25 |
Ну зачем такое нужно - можно представить. Другое дело - беда со стандартными функциями, да и тьфу на них. Придумать алгоритм генерёжки имён файлов из текущего времени и буковок на хвосте, если их (файлов) больше штуки в секунду генерится - в принципе не задача...
0
|
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
|
|
20.04.2011, 01:52 | 26 |
msdn
стандарт не запрещает создавать файлы, уникальные именно для текущей рабочей директории, но и не обязывает поэтому компиляторы запросто могут создавать и для текущей, и не для текущей главное, они должны выдавать путь, по которому нет файла написав код, который создаёт имя файла, полагая, что тот в текущей директории, может возникнуть ошибка на каком-нибудь другом компиляторе (я приводил пример, где программа в каталоге $HOME/tmp/tests создаёт файлы в /tmp)
Сообщение от fasked
Сообщение от kravam
но выдаёт весь путь, по которому можно сразу создавать файл присоединяю инфу из C99. draft там также говорится о нулевом указателе, который может вернуть функция
0
|
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,679
|
|||||||||||
20.04.2011, 12:23 [ТС] | 27 | ||||||||||
Так может быть надо в настройках компилятора порыться?
Файл stdio.h
"Redefining these macros does not effect the CRT functions." Что такое CRT, знает кто-нибудь? ...Хотя
0
|
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
|
|
21.04.2011, 03:19 | 28 |
Сообщение от kravam
и это вполне реально 1. сгенерировать случайную последовательность символов 2. найти в каталоге все файлы 3. сравнить последовательность с именем каждого файла
0
|
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,679
|
||||||
21.04.2011, 09:37 [ТС] | 29 | |||||
Я хочу быть последовательным, раз уж встал вопрос о работоспособности моего, да и не только моего компилятора, надо его выяснить тык скыть до конца. А если щас я буду реализовывать tmpnam, то я её, конечно, реализую, но вопрос о компиляторе отложится в долгий ящик таким образом. А потом вообще зарастёт мхом. Нельзя этого допускать!
...Тем более, что считайте, что tmpnam реализована уже, тут трудностей нет никаких! Начать с этой строки:
0
|
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,679
|
|
21.04.2011, 10:53 [ТС] | 31 |
Это что, типа бесполезно его менять?
0
|
21.04.2011, 10:53 | |
21.04.2011, 10:53 | |
Помогаю со студенческими работами здесь
31
Почему не создается xml-файл? На вижу мой сайт на своем компе, на других компах его видно. Почему? Почему не создается файл и не записываются в него элементы? При распаковке архива файл извлекается, но его не видно Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |