Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > C++ Builder
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.12.2009, 00:09   #1
lesimel
 
Регистрация: 06.12.2009
Сообщений: 9
По умолчанию прошу помощи у умных людей...

Задача такая: Есть файл с текстом, вводим например 100 символ и каждый 100 символ, записывается в другой файл...
Помогите пожалуйста, что-то я туплю как можно это все организовать?
с помощью масссива?
lesimel вне форума Ответить с цитированием
Старый 07.12.2009, 00:12   #2
lesimel
 
Регистрация: 06.12.2009
Сообщений: 9
По умолчанию

и еще у кого нить есть книжки по C++ Builder Буду очень признательна...
lesimel вне форума Ответить с цитированием
Старый 07.12.2009, 00:37   #3
forsaken66
Куды бечь?
Форумчанин
 
Аватар для forsaken66
 
Регистрация: 05.10.2009
Сообщений: 104
По умолчанию

Есть в С++ функции произвольного доступа (seekg(), seekp()), которые позволяют считать или записать данные с любого места в файле. Т. е. обычно доступ к содержимому файла осуществляется последовательно, байт за байтом. Но seekg(), seekp() позоляют переместить указатель в нужное место.
На практике как то так

Код:
//ввод k (100 к примеру) и открытие файлового потока (out) в режиме бинарного доступа
out.seekp(k,ios::beg);
//запись символа в файл
k+=k;
по моему так
Не хватало всего одного байта. Да-да, того самого, что из восьми бит состоит.
forsaken66 вне форума Ответить с цитированием
Старый 07.12.2009, 00:39   #4
rockedit
Форумчанин
 
Аватар для rockedit
 
Регистрация: 18.03.2009
Сообщений: 109
По умолчанию

В цикле читаешь посимвольно файл и проверяешь, если остаток от деления счетчика цикла на нужное число (в твоем случае 100) равен 0, то записать этот символ в другой файл.
Книжка есть одна по C++ Builder, могу на мыло кинуть.
Мозг человека обычно загружен лишь на 10% своей мощности; остальное резерв для опереционной системы. Если помог не пожалей "+", это лучшее спасибо
rockedit вне форума Ответить с цитированием
Старый 07.12.2009, 00:48   #5
lesimel
 
Регистрация: 06.12.2009
Сообщений: 9
По умолчанию

Цитата:
Сообщение от rockedit Посмотреть сообщение
В цикле читаешь посимвольно файл и проверяешь, если остаток от деления счетчика цикла на нужное число (в твоем случае 100) равен 0, то записать этот символ в другой файл.
Книжка есть одна по C++ Builder, могу на мыло кинуть.
а как прочитать посимвольно файл, я пока ниче не могу понять с С , а насчет учебника если можно на lesimel@yandex.ru
lesimel вне форума Ответить с цитированием
Старый 07.12.2009, 00:49   #6
rockedit
Форумчанин
 
Аватар для rockedit
 
Регистрация: 18.03.2009
Сообщений: 109
По умолчанию

Цитата:
Сообщение от lesimel Посмотреть сообщение
а как прочитать посимвольно файл, я пока ниче не могу понять с С , а насчет учебника если можно на lesimel@yandex.ru
На каком си ты пишешь?
Мозг человека обычно загружен лишь на 10% своей мощности; остальное резерв для опереционной системы. Если помог не пожалей "+", это лучшее спасибо
rockedit вне форума Ответить с цитированием
Старый 07.12.2009, 00:50   #7
lesimel
 
Регистрация: 06.12.2009
Сообщений: 9
По умолчанию

C++ Builder 2009
lesimel вне форума Ответить с цитированием
Старый 07.12.2009, 01:39   #8
rockedit
Форумчанин
 
Аватар для rockedit
 
Регистрация: 18.03.2009
Сообщений: 109
По умолчанию

Вот вариант с использованием визуальных компонентов, в этом примере в компонент Memo1 загружаеться файл test.txt который находиться в том же каталоге что и исполняемый файл, и после обработки в Memo1 пишется результат. n я задал программно, но можно и при помоши компонента Edit. Единственная проблема в том, что назад пишеться вес содержимое массива, т.е. быдет муссор в конце строки . я не спец в си, написал исходя из того что умею, так что не судите строго)
Код:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
 int n,k,i;
 char out[30];
 char *s;
 k = 0;
 n = 100;
 Memo1->Lines->LoadFromFile("test.txt");
 s = Memo1->Text.c_str();
 for (i = 0; i < strlen(s); i++) {
	  if (i % n == 0) {
		  out[k] = s[i];
		  k++;
	  }
 }

 Memo1->Lines->Clear();

 Memo1->Text = out;

 }
Мозг человека обычно загружен лишь на 10% своей мощности; остальное резерв для опереционной системы. Если помог не пожалей "+", это лучшее спасибо
rockedit вне форума Ответить с цитированием
Старый 07.12.2009, 12:50   #9
atomicxp
Форумчанин
 
Аватар для atomicxp
 
Регистрация: 01.05.2009
Сообщений: 110
По умолчанию ... ... ...

Цитата:
Сообщение от lesimel Посмотреть сообщение
и еще у кого нить есть книжки по C++ Builder Буду очень признательна...
возможно...
atomicxp вне форума Ответить с цитированием
Старый 07.12.2009, 22:26   #10
lesimel
 
Регистрация: 06.12.2009
Сообщений: 9
По умолчанию

rockedit
Спасибки за помощь, чуть доработаю ))))
Попозже выложу код доработки вдруг кому-то понадобится...
lesimel вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Прошу помощи:) valiza Помощь студентам 0 03.07.2009 11:58
Прошу помощи! hijke Паскаль, Turbo Pascal, PascalABC.NET 0 10.06.2009 18:04
прошу помощи ex-hack Помощь студентам 2 05.06.2009 15:54
Прошу помощи. Brian Lee Jones Свободное общение 0 19.06.2008 00:21
Прошу помощи!!! Oksana Общие вопросы Delphi 3 03.03.2007 12:51