Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Файлы, Фигню в конец файла дописывает 
:(
    Опции темы
interceptor
Дата 13.11.2005, 16:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 4.10.2005

Репутация: нет
Всего: нет



Пишу из одного файла в другой а он еще в конец файла дописывает фигню

Код


CFile File1("c:\\temp\\a\\file.dat", CFile::modeRead);
CFile File2("c:\\temp\\a\\file1.dat", CFile::modeCreate | CFile::modeReadWrite);
char line[1000];
File1.Read(line,strlen(line));
File2.Write(line,strlen(line));


и еще кто нибудь знает как char массив сделать пустым
PM MAIL   Вверх
sergejzr
Дата 13.11.2005, 16:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: нет
Всего: 360



Файл меньше 1000 байт, вот и пишет фигню. Тебе надо сперва узнать длинну файла и line делать именно такой длинны.


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
interceptor
Дата 13.11.2005, 16:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 4.10.2005

Репутация: нет
Всего: нет



как я узнаю длину если она меняется при добавлении в фаил
PM MAIL   Вверх
sergejzr
Дата 13.11.2005, 16:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: нет
Всего: 360



длинну File1


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
interceptor
Дата 13.11.2005, 17:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 4.10.2005

Репутация: нет
Всего: нет



что мне теперь при добавлении File1 инф. мне нужно менять размер буфера в программе а это фигня полная
PM MAIL   Вверх
AlexPro
Дата 13.11.2005, 17:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 157
Регистрация: 9.11.2005
Где: Санкт-Петербург

Репутация: 3
Всего: 4



Файл должен быть чисто текстовой? Если да - поиск первого нулевого символа, все остальное - безжалостно отсекается. Если нет, я бы сначала писал в файл размер строки, а затем - собственно строку, чтобы не париться самому и не грузить по пустякам систему.
PM MAIL   Вверх
nikitao
Дата 13.11.2005, 18:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кот-программист
***


Профиль
Группа: Завсегдатай
Сообщений: 1206
Регистрация: 30.8.2005
Где: Спб

Репутация: нет
Всего: 26



interceptor,смотри обьяcняю доходчиво:
Когда ты создаешь массив linе изночально в нем хронится всякий мусор(уж такова специфика обьявления локальных переменных в C++),потом ты считываешь данные из file(при этом указываешь длину строки =1000 элементов)
Скажем в нем хронится 100 элементов=>после записи в массив первые 100 элементов будут нормальные,а остольное мусор.Следовательно при записи в файл file1 запишется тоже мусор.

Это сообщение отредактировал(а) nikitao - 13.11.2005, 19:29


--------------------
Жизнь - печальная штука.
PM MAIL ICQ Skype GTalk   Вверх
S.A.P.
Дата 13.11.2005, 19:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2664
Регистрация: 11.6.2004

Репутация: 2
Всего: 71



Цитата(interceptor @ 13.11.2005, 17:14)
что мне теперь при добавлении File1 инф. мне нужно менять размер буфера в программе а это фигня полная
зачем менять размер буфера? Ты вторым параметром в Write пишешь размер записываемой информации, вот и подставь туда количество байт, которые считались.

Код

int count = File1.Read(line, 1000);
File2.Write(line, count);


PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




[ Время генерации скрипта: 0.0510 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.