Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как скопировать из файла в файл 
:(
    Опции темы
Julia9311
Дата 6.12.2012, 15:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



я пыталась написать программу, копирующая содержимое одного текстового файла в другой. Понимаю только как открыть эти два файла и закрыть, а  как сделать так, чтобы произошло копирование?
PM MAIL   Вверх
feodorv
Дата 6.12.2012, 15:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2214
Регистрация: 30.7.2011

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



Цитата(Julia9311 @  6.12.2012,  16:23 Найти цитируемый пост)
как сделать так, чтобы произошло копирование? 

Последовательно читать из одного файла и писать в другой.

Цитата(Julia9311 @  6.12.2012,  16:23 Найти цитируемый пост)
я пыталась написать программу

Приведите хоть какой-то код)))


--------------------
Напильник, велосипед, грабли и костыли - основные инструменты программиста...
PM MAIL   Вверх
Julia9311
Дата 6.12.2012, 15:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Код
#include "iostream.h"
#include "fstream.h"
#include "conio.h"
int main()
{   
    
    ifstream infile;
    ofstream outfile;
    infile.open("text1.txt");
    while(!infile.eof())
    outfile.open("text2.txt");
    while(!outfile.eof())
//здесь должно происходить копирование из text1 в text2
    infile.close(); 
    outfile.close();
    return 0;
    getch();
}


Модератор: не забываем пользоваться кнопочкой "Код"

Это сообщение отредактировал(а) bsa - 7.12.2012, 12:41
PM MAIL   Вверх
feodorv
Дата 6.12.2012, 16:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2214
Регистрация: 30.7.2011

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



Цитата(Julia9311 @  6.12.2012,  16:56 Найти цитируемый пост)
    outstream outfile;

Наверное, ofstream? Вы скомпилировать пробовали?


--------------------
Напильник, велосипед, грабли и костыли - основные инструменты программиста...
PM MAIL   Вверх
Julia9311
Дата 6.12.2012, 16:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



ой, да, точно))) ofstream
компилируется без ошибок)
PM MAIL   Вверх
feodorv
Дата 6.12.2012, 16:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2214
Регистрация: 30.7.2011

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



Цитата(Julia9311 @  6.12.2012,  17:11 Найти цитируемый пост)
компилируется без ошибок) 

Допустим)))

Если Вы хотите копировать файлы байт-в-байт, то следует открывать их в бинарной моде:
Код

    infile.open( "text1.txt",  ifstream::in | ifstream::binary);
    outfile.open( "text2.txt", ofstream::out | ofstream::binary);

Ну, и нужно проверить, а открылись ли файлы (а вдруг нет)?

Потом, если работать сразу с двумя файлами, то while должен быть один:
Код

    infile.open("text1.txt");
    outfile.open("text2.txt");
    while( !infile.eof() )
    {
       // do real work
    }
    infile.close(); 
    outfile.close();


И код после return выполнен не будет:
Цитата(Julia9311 @  6.12.2012,  16:56 Найти цитируемый пост)
    return 0;
    getch();



Это сообщение отредактировал(а) feodorv - 6.12.2012, 16:30


--------------------
Напильник, велосипед, грабли и костыли - основные инструменты программиста...
PM MAIL   Вверх
Dem_max
Дата 6.12.2012, 17:05 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата

а  как сделать так, чтобы произошло копирование?


memcpy


--------------------
Американские программисты долго не могли понять, почему русские при зависании Windоws всё время повторяют "Твой зайка написал" ("Yоur bunnу wrоte")
PM MAIL   Вверх
feodorv
Дата 6.12.2012, 17:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2214
Регистрация: 30.7.2011

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



Цитата(Dem_max @  6.12.2012,  18:05 Найти цитируемый пост)
memcpy 

Нет, Dem_max, так не пойдёт. Самый простой вариант - копировать по одному байту:
Код

  int ch = infile.get();
  while( infile.good() && outfile.good() )
 {
    outfile.put( (char) ch );
    ch = infile.get();
  }



--------------------
Напильник, велосипед, грабли и костыли - основные инструменты программиста...
PM MAIL   Вверх
Julia9311
Дата 6.12.2012, 17:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Все, разобралась)  А как сделать еще так чтобы при копировании из первого файла во второй С заменялось на С++? 

Код
#include "iostream"
#include "fstream"
#include "conio.h"
 
using namespace std;
 
int main()
{   
    
    ifstream infile;
    ofstream outfile;
 
    infile.open("text1.txt");
    outfile.open("text2.txt");
 
    char buffer[1000];         
    while(!infile.eof())       
    {
        infile.getline(buffer,sizeof(buffer));         
        outfile<<buffer<<endl;                  
    }
 
    infile.close();         
    outfile.close();    
 
    return 0;
}


Модератор: не забываем пользоваться кнопочкой "Код"
PM MAIL   Вверх
baldina
Дата 6.12.2012, 18:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



это наверно самый понятный вариант (с точки зрения устройства копирования), но не самый простой.
самый простой - с использованием ostream_iterator, istream_iterator, copy
PM MAIL   Вверх
Julia9311
Дата 6.12.2012, 18:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Пытаюсь сделать так, чтобы при копировании из первого файла во второй С заменялось на С++, ничего не получается(. Помогите, пожалуйста!
Код
#include "iostream"
#include "fstream"
#include "conio.h"
 
using namespace std;
 
int main()
{   
    
    ifstream infile;
    ofstream outfile;
 
    infile.open("text1.txt");
    outfile.open("text2.txt");
 
    char buffer[1000];         
    while(!infile.eof())       
    {
        infile.getline(buffer,sizeof(buffer)); 
        if (buffer[infile] == 'C')
        buffer(outfile) = 'C++';        
        outfile<<buffer<<endl;                  
    }
 
    infile.close();         
    outfile.close();    
 
    return 0;
}


Модератор: не забываем пользоваться кнопочкой "Код"
PM MAIL   Вверх
volatile
Дата 7.12.2012, 01:41 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(Julia9311 @  6.12.2012,  18:37 Найти цитируемый пост)
чтобы при копировании из первого файла во второй С заменялось на С++, 

если нет особых требований по быстродействию, то это должно сгодиться:
Код

#include <fstream>
int main()
{
   std::ifstream  infile ("text1.txt", std::ios_base::binary);
   std::ofstream outfile ("text2.txt", std::ios_base::binary);
   for (;;)
   {
      char c;
      if (!infile.get (c).good ()) break;
      if (!outfile.put (c).good ()) break;
      if (c=='C') outfile << "++";
   }
}

PM MAIL   Вверх
baldina
Дата 7.12.2012, 16:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



а не требуется ли заменить не буквы, а слова "C"?
PM MAIL   Вверх
borisbn
Дата 8.12.2012, 19:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Julia9311, посмотри, плиз, это - https://dl.dropbox.com/u/46469564/2012-12-08%2020h10_17.mp4


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

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


 




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


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

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