Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Visual C++/MFC/WTL > Файлы


Автор: interceptor 13.11.2005, 16:06
Пишу из одного файла в другой а он еще в конец файла дописывает фигню

Код


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 массив сделать пустым

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

Автор: interceptor 13.11.2005, 16:32
как я узнаю длину если она меняется при добавлении в фаил

Автор: sergejzr 13.11.2005, 16:41
длинну File1

Автор: interceptor 13.11.2005, 17:14
что мне теперь при добавлении File1 инф. мне нужно менять размер буфера в программе а это фигня полная

Автор: AlexPro 13.11.2005, 17:17
Файл должен быть чисто текстовой? Если да - поиск первого нулевого символа, все остальное - безжалостно отсекается. Если нет, я бы сначала писал в файл размер строки, а затем - собственно строку, чтобы не париться самому и не грузить по пустякам систему.

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

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

Код

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


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)