![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| Джем |
|
|||
|
Unregistered |
Существует ли функция, чтоб осуществить сабж?
Если открываю файл с параметром "w", новое содержимое пишется поверх старого. Но! Если новая переменная меньше чем старая переменная, конечный кусок старой переменной остается. |
|||
|
||||
| sergejzr |
|
|||
![]() Un salsero Профиль Группа: Админ Сообщений: 13285 Регистрация: 10.2.2004 Где: Германия г .Ганновер Репутация: 19 Всего: 360 |
http://forum.vingrad.ru/index.php?showtopic=21451
Вот тут мы разбирались с подобмым функцией
Можно просто укоротить файл на 0 |
|||
|
||||
| bel_nikita |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Эксперт Сообщений: 2304 Регистрация: 12.10.2003 Где: Поезд №21/22 ( ст . Прага ) Репутация: 21 Всего: 47 |
sergej.z
Плюс надо добавить библиотеку, в которой эта функция реализована Идея, такова: 1. Отрыть файл 2. Переместить поинтер, при помощи fseek(FILE*, offset, origin), которая очищает признак конца файла 3. Закрыть файл |
||||
|
|||||
| Crait |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 244 Регистрация: 20.2.2003 Репутация: нет Всего: 1 |
|
|||
|
||||
| Джем |
|
|||
|
Unregistered |
Спасибо, что откликнулись, но функция эта, вообще никак не идет: и HANDLE, и GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE и прочие не нравятся моему компилятору. Может какую библиотеку нужно включить?
bel_nikita
Не понял. Это может помочь вместо предлагаемой функции? Если да, то куда нужно переместить указатель, и каким образом очистить признак конца? |
|||
|
||||
| Adil' |
|
||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 311 Регистрация: 26.8.2004 Где: Питер Репутация: 6 Всего: 15 |
-------------------- Удачи |
||||||
|
|||||||
| Джем |
|
|||
|
Unregistered |
Adil'
То есть для TurboC не пойдет? И для чего твой код? Чтоб не было EOF? |
|||
|
||||
| Adil' |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 311 Регистрация: 26.8.2004 Где: Питер Репутация: 6 Всего: 15 |
open("file.ext",O_BINARY|O_CREAT|O_RDWR|O_TRUNC); с флагом O_TRUNC открывает файл и "урезает" его размер до нуля - то, что ты хотел. Там где, у меня "..." може смело писАть свою переменную - хвост не останется; размер файла будет равен размеру того, что ты запишешь на месте "...". -------------------- Удачи |
||||
|
|||||
| Джем |
|
|||
|
Unregistered |
Adil'
Ничего от добавления этого кода не изменилось. Может я что не так делаю? А делаю я так: Сначала открываю файл для записи. Потом идет твой код. В месте "..." идет запись переменных в файл. Закрываю файл. |
|||
|
||||
| Mad |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Эксперт Сообщений: 656 Регистрация: 18.10.2004 Где: Одесса Репутация: 7 Всего: 19 |
Этот код просто должен был сработать. Посмотри, может ты этот хвостик сам записываеш поновой ? покажи код, которым ты в файл пишеш. |
|||
|
||||
| Intro |
|
|||
|
Unregistered |
Зачем всё так сложно?
просто запоминаешь имя файла, потом его удаляешь, потом создаешь поток с именем файла, вот и всё... ;) |
|||
|
||||
| smalcom |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 494 Регистрация: 16.10.2004 Где: Dnepr Репутация: нет Всего: 7 |
точно не помню приблизительно это выглядит так
и никакой извините за выражение траханины, если есть файл, то обнулица, если нету, то создасца пустой. -------------------- What DA F...??? |
|||
|
||||
| Джем |
|
||||||
|
Unregistered |
Напишу-ка я код всей функции. Функция производит изменения в файле fname, при этом используется временный файл "c:\disk.tmp". До функции изменения файлы открываются: первый - для чтения, второй - для записи.
Но, похоже, дело в чем-то другом. Делаю проверку. Отдельной функцией заношу данные в первый файл. Второго пока не существует. Выполняю функцию изменения. Смотрю результат: первый файл, как обычно... НО И во временном файле почему-то записаны не новые переменные, а такая же ерунда - новые поверх старых.
Каким образом можно удалить файл программно? |
||||||
|
|||||||
| Adil' |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 311 Регистрация: 26.8.2004 Где: Питер Репутация: 6 Всего: 15 |
Что же ты в одну кучу намешал?
-------------------- Удачи |
||||
|
|||||
| Джем |
|
|||
|
Unregistered |
Adil'
Да уж получилось масло масляное. А выяснилось, что если просматривать файл каким текстовым редактором, то там новые переменные записаны поверх старых и их конец остается, а если просматривать этот же файл программно, то все пучком - никакой лишней информации. Странно... Попробовал удалить файл unlink("c:\1.txt"). Таким образом не удаляет. |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |