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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.06.2010, 07:42   #1
Crab2
Пользователь
 
Регистрация: 12.02.2010
Сообщений: 19
По умолчанию файловые потоки

Вообщем вроде то и не сложно. Каждую нечетную строчку в 1ый файл, четную во 2ой файл. Но вот проблема же: как сделать чтобы сначала сделать файл пустым, записать в него, потом считать из него с 0. И помогите пожалуйста, гугл не помогает, как файл отправить в функцию, как указатель?

Код:
#include <iostream>
#include <fstream>

using namespace std;

int main()
{

    fstream text1("1.txt", ios::in);
    ofstream text2("2.txt"), text3("3.txt");
    char gracias[1024];
    int i = 1, mod;

	//	getline(dataBaseFile, fileLine);
	while(!text1.eof())
	{

        mod=i%2;
        i++;
	    if(mod=1)
        {
                text1.read((char*)&gracias,sizeof(gracias));
                text2 << gracias;
         }
        else
        {
                text1.read((char*)&gracias,sizeof(gracias));
                text2 << gracias;
        }
	}




    cout << "text #1" << endl;
    text2.seekg(0);
    while(!text2.eof())
    {
        text2.read((char*)&gracias,sizeof(gracias));
        cout << gracias;
    }
    cout << "\n\n\n text #2" << endl;
    text3.seekg(0);
       while(!text3.eof())
    {
        text3.read((char*)&gracias,sizeof(gracias));
        cout << gracias;
    }


    return 0;
}
Все и сразу-мечта идиота
Crab2 вне форума Ответить с цитированием
Старый 22.06.2010, 09:11   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
как сделать чтобы сначала сделать файл пустым
т.е? А ofstream text2("2.txt") разве не создает пустой файл изначально?
Записать в файл оч. просто:
Код:
	ofstream txt1("c:\\temp\\q1.txt");
	for(int i=0;i<10;i++){
	 txt1<<i<<'\n';
	}
	txt1.close();
Считать тоже не сложно.

А вообще твоя задача может решиться вот так:
Код:
#include "stdafx.h"
#include <iostream>
#include <fstream>
#include <iostream>

using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
	ofstream txt1("c:\\temp\\q1.txt");
	for(int i=0;i<10;i++){
	 txt1<<i<<'\n';
	}
	txt1.close();
	ifstream txt0("c:\\temp\\q1.txt");
	ofstream txt11("c:\\temp\\q11.txt");
	ofstream txt12("c:\\temp\\q12.txt");
	char s[255];
	while(!txt0.eof()){
	 txt0>>s;	txt11<<s;
	 txt0>>s;	txt12<<s;
	}
	txt0.close();
	txt11.close();
	txt12.close();
	system("Pause");
	return 0;
}
Цитата:
гугл не помогает
Йад поможет
I'm learning to live...

Последний раз редактировалось Stilet; 22.06.2010 в 09:15.
Stilet вне форума Ответить с цитированием
Старый 22.06.2010, 09:18   #3
Crab2
Пользователь
 
Регистрация: 12.02.2010
Сообщений: 19
По умолчанию

Йад не поможет, строчки с пробелами и поэтому оператор >> не катит он только одно слово

Я ж сказал их ещё вывести нужно, чтобы занести во второй файл проблем вообще нету.
Проблемы в выводе на экран офстримовского файла. Плюс как передать файл в функцию?
Все и сразу-мечта идиота

Последний раз редактировалось Stilet; 22.06.2010 в 09:31.
Crab2 вне форума Ответить с цитированием
Старый 22.06.2010, 09:31   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Поможет. Йад штука хорошая
Цитата:
строчки с пробелами
Ха!... Это же Си - тут все можно:
Код:
	while(!txt0.eof()){
		txt0.getline(s,255);  	txt11<<s;
		txt0.getline(s,255);  	txt12<<s;
	}
Цитата:
Плюс как передать файл в функцию?
Это по заданию, или чисто тебе самому интересно?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 22.06.2010, 09:35   #5
Crab2
Пользователь
 
Регистрация: 12.02.2010
Сообщений: 19
По умолчанию

За то что выложил предыдущий человек говорить не буду, потому что он просто заменил операторов в моем коде и убрал важную часть из программы, я ж как человек человека помощи попросил, а ты мне и яду посоветовал выпить и не помог как человек человеку.
В общем если у кого то проблемы с такими задачами будут, то вот пример, чтобы разобраться. Комплировал на g++
З.ы. у меня не задача. Мне просто нужен подобный кусок кода, а именно в функции
Код:
#include <iostream>
#include <fstream>

using namespace std;

int main()
{

    fstream text1("1.txt", ios::in);
    ofstream text2("2.txt"), text3("3.txt");
    char gracias[1024];
    int i = 1, mod;

	//	getline(dataBaseFile, fileLine);
	while(!text1.eof())
	{

        mod=i%2;
        i++;
	    if(mod=1)
        {
                text1.read((char*)&gracias,sizeof(gracias));
                text2 << gracias;
         }
        else
        {
                text1.read((char*)&gracias,sizeof(gracias));
                text2 << gracias;
        }
	}

    text1.close();
    text2.close();
    text3.close();
    fstream tt("text2.txt"), tt2("text3.txt");


    cout << "text #1" << endl;

    while(!tt.eof())
    {
        tt.read((char*)&gracias,sizeof(gracias));
        cout << gracias;
    }
    cout << "\n\n\n text #2" << endl;

      while(!tt2.eof())
    {
        tt2.read((char*)&gracias,sizeof(gracias));
        cout << gracias;
    }


    return 0;
}
Все и сразу-мечта идиота
Crab2 вне форума Ответить с цитированием
Старый 22.06.2010, 09:38   #6
ozo
Форумчанин
 
Аватар для ozo
 
Регистрация: 26.04.2010
Сообщений: 328
По умолчанию

Код:
#include <fstream>
#include <string>

int main(){
  std::string tmp;
  std::ifstream in("test.txt");
  std::ofstream first("first.txt"), second("second.txt");
  std::ostream  *stream;
  for( int i = 0; !in.eof(); ++i ){
    std::getline( in, tmp );
    stream = ( i % 2 ? &first : &second );
    *stream << tmp << '\n';
  }
  in.close();
  first.close();
  second.close();
}
Код:
#include <fstream>
#include <string>

void throwLines( std::ifstream &in, std::ofstream &first, std::ofstream &second ){
  std::string   tmp;
  std::ostream  *stream;
  for( int i = 0; !in.eof(); ++i ){
    std::getline( in, tmp );
    stream = ( i % 2 ? &first : &second );
    *stream << tmp << '\n';
  }
}

int main(){
  std::ifstream in("test.txt");
  std::ofstream first("first.txt"), second("second.txt");
  throwLines( in, first, second ); 
  in.close();
  first.close();
  second.close();
}
Как-то так можно сделать )
Используй гугль, будь счастлив
hackme@yandex.ru
Блог об archlinux

Последний раз редактировалось ozo; 22.06.2010 в 09:55.
ozo вне форума Ответить с цитированием
Старый 22.06.2010, 09:39   #7
Crab2
Пользователь
 
Регистрация: 12.02.2010
Сообщений: 19
По умолчанию

да я уже сделал. Просто файл закрыл и открыл в fstream
Все и сразу-мечта идиота
Crab2 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Масивы. Файловые типы. Smile :) Паскаль, Turbo Pascal, PascalABC.NET 2 16.06.2010 10:55
Файловые операции _GT_ Общие вопросы C/C++ 1 08.05.2010 20:48
файловые переменные sestrenka141989 Паскаль, Turbo Pascal, PascalABC.NET 1 06.05.2010 12:41
задача на файловые потоки в C++ Klyan Помощь студентам 1 06.01.2008 01:49