Вопрос № 34741: Здравствуйте.
мне дали задание по СИ++ (Билдер, консольный проект), а под рукой нет нормальной литературы.
вообщем столкнулся со следующими проблемами:
1) при создании файла функцией open(file_name, O_CREAT|O_RDWR|O_BINARY);
файл созд...
Вопрос № 34.741
Здравствуйте.
мне дали задание по СИ++ (Билдер, консольный проект), а под рукой нет нормальной литературы.
вообщем столкнулся со следующими проблемами:
1) при создании файла функцией open(file_name, O_CREAT|O_RDWR|O_BINARY);
файл создается с атрибутом "для чтения", из-за этого я не могу в него записывать (функция open возвращает ошибку EACCES). почему винда (у меня ХР) при создании файла ставит эту галочку, и как это программно обойти (или чтоб она его не ствила, или чтоб программа могла его снять)?
2) как на чистом С(С++) удаляются, переименовываются и очищаются (чтоб содержимое удалялось, но без пересоздания файла) файлы?
зарание спасибо
Отправлен: 04.02.2006, 20:08
Вопрос задал: PROD (статус: 3-ий класс)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Evgeniy
Здравствуйте, PROD!
1)Ошибка EACCES говорит об отказе доступа, поробуйте создавать файл как..
open(file_name, O_CREAT|O_RDWR|O_BINARY|S_IWRITE|S_IREAD);
2)удалить файл можно:
int remove(chat* name_file);
int unlink(const char* name_file);
Очистить файл можно открыв существующий файл для записи с битом "w"
fopen(file,"w"); //содержимое должно затереться
Ответ отправил: Evgeniy (статус: 1-ый класс)
Отправлен: 05.02.2006, 06:10 Оценка за ответ: 4 Комментарий оценки: Спасибо, попробую.
Отправить вопрос экспертам этой рассылки
Приложение (если необходимо):
* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.
Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!
Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.
Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.