Форум программистов, компьютерный форум CyberForum.ru

создать 3 файла,а затем переместить информацию из 1 во 2, из 2 в 3, из 3 в 1. - C++

Восстановить пароль Регистрация
 
enotik
1 / 1 / 0
Регистрация: 20.10.2010
Сообщений: 147
08.02.2011, 23:35     создать 3 файла,а затем переместить информацию из 1 во 2, из 2 в 3, из 3 в 1. #1
У меня есть задача создать 3 файла,а затем переместить информацию из 1 во 2, из 2 в 3, из 3 в 1.

И у меня есть нескоькл вопросов:
1) например я написала функцию по созданию файла:

C++
1
2
3
4
5
6
7
8
9
10
11
12
void create_file (char filename[20])
{int i,k,x;
    FILE*f=fopen (filename,"w");
 
printf ("Enter kol-vo elementov v faile\n");
scanf ("%d",&k);
for (i=0;i<k;i++)
{    printf ("Enret infy\n");
    scanf ("%d",&x);
fprintf (f,"%d\t",x);};
fclose (f);
}
могу ли я дальше в void main с помощью этой функции создать три различных файла? (а вернее, 4, ибо мне понадобится лишний для обмена).Если, да, то как это сделать?
или мне надо написать 3 (4) различных функции для создания 3(4) различных файлов с разными именами?

вопрос номер 2 (глупый)
вообще идея такова: создаю 4 файла, один из которых выполняет роль буфера, и начинаю копировать (из 2 в 4, из 1во2, из 3 в 1, и из4 в 3).

Если я сначало пишу функции (создание/обмен) и создаю файлы потом в void main могу ли я ( и как) оперировать еще несозданными файлами.

Вообщем, со второй функцией (Обмен) я вообще мало чего понимаю.
каким образом все это меняется? как переписать из одного файла что либо в другой?
может быть в каждом файле создать массив заменив int x на int x[n] ? затем, используя функцию strcpy переписывать информацию из одного массива в другой, а как потом вернуть нужный массив нужному файлу? (или этого делать не нужно?ибо каждый массив и так находится в своем файле?)???

Вообщем я понимаю что все вышенаписанное - бред сумасшедшего, но все же жду ответов))
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.02.2011, 23:35     создать 3 файла,а затем переместить информацию из 1 во 2, из 2 в 3, из 3 в 1.
Посмотрите здесь:

Создать два бинарных файла, содержащих числовую информацию. В результате преобразований в первом файле должны остаться только четные, а во втором C++
упорядочить выбранную информацию по возврастанию номеров телефона, а затем записать в файл C++
C++ Надо из файла переместить строки в массив
C++ Создать текстовый файл, содержащий числовую информацию. Найти сум-му всех положительных чисел и записать ее в начало файла. Дополнитель-ных массивов и
C++ Как правильно создать функцию и затем вызвать ее
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
perimetral
1 / 1 / 0
Регистрация: 17.12.2010
Сообщений: 16
09.02.2011, 00:51     создать 3 файла,а затем переместить информацию из 1 во 2, из 2 в 3, из 3 в 1. #2
Вот с fstream и прочей ересью для текстовых файлов:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include "stdafx.h"
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
 
void main() {
    fstream f[3]; string fn[3]; int i=0;
    while (i<3) {
        cout<<"Введите имя файла "<<i<<": "; cin>>fn[i++]; }
    f[0].open(fn[0], ios::in); f[1].open(fn[1], ios::out); f[1] << f[0]; f[0].close(); f[1].close();
    f[1].open(fn[1], ios::in); f[2].open(fn[2], ios::out); f[2] << f[1]; f[1].close(); f[2].close();
    f[2].open(fn[2], ios::in); f[0].open(fn[0], ios::out); f[0] << f[2]; f[2].close(); f[0].close();
}
Собственно, ввод данных в файл и сама сделаешь =)
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9371 / 5421 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
09.02.2011, 02:02     создать 3 файла,а затем переместить информацию из 1 во 2, из 2 в 3, из 3 в 1. #3
enotik,
C
1
2
3
4
5
6
7
8
9
10
#include <stdio.h>
int main(void){
  /* ... */
  rename("f1.txt", "tmp");
  rename("f2.txt", "f1.txt");
  rename("f3.txt", "f2.txt");
  rename("tmp", "f3.txt");
 
  return 0;
}
enotik
1 / 1 / 0
Регистрация: 20.10.2010
Сообщений: 147
09.02.2011, 18:26  [ТС]     создать 3 файла,а затем переместить информацию из 1 во 2, из 2 в 3, из 3 в 1. #4
Всем огромное спасибо, но проблема в том, что я абсолютно ничего не поняла, ибо

cout еще не проходили, а в сообщении easybudda я вовсе ничего не поняла.
Обладаю познаниями на самом примитивном уровне(
enotik
1 / 1 / 0
Регистрация: 20.10.2010
Сообщений: 147
12.02.2011, 21:57  [ТС]     создать 3 файла,а затем переместить информацию из 1 во 2, из 2 в 3, из 3 в 1. #5
м б у кого-нибудь будут еще предложения??
((
igorrr37
 Аватар для igorrr37
1593 / 1221 / 118
Регистрация: 21.12.2010
Сообщений: 1,868
Записей в блоге: 7
13.02.2011, 00:28     создать 3 файла,а затем переместить информацию из 1 во 2, из 2 в 3, из 3 в 1. #6
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include<iostream>
#include<fstream>
#include<algorithm>
#include<cstdio>
using namespace std;
 
 
int main(){
    fstream fs;
    char mas[]="textX.txt";
    string dat[3];
    int k, x;
    for(char c='1'; c<='3'; c++){ // создание 3 файлов
        mas[4]=c;
        fs.open(mas, ios::out);
        printf ("Enter kol-vo elementov v faile\n");
        scanf ("%d",&k);
        for (int i=0; i<k; i++){
            printf ("Enret infy\n");
            scanf ("%d", &x);
            fs<<x<<"\n";
        }
        fs.close();
    }
    for(char c='1'; c<='3'; c++){ // считывание их в массив 
        mas[4]=c;
        fs.open(mas);
        getline(fs, dat[c-49], (char)EOF);
        fs.clear();
        fs.close();
    }
    rotate(dat, dat+2, dat+3);    // ротация массива
    for(char c='1'; c<='3'; c++){ // запись массива обратно в файлы
        mas[4]=c;
        fs.open(mas, ios::out);
        fs<<dat[c-49];
        fs.close();
    }
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.02.2011, 16:09     создать 3 файла,а затем переместить информацию из 1 во 2, из 2 в 3, из 3 в 1.
Еще ссылки по теме:

C++ Создать новую строку, содержащую вначале символы, а затем цифры из S
Записать в файл S сначала компонент файла F, затем компонент файла G с сохранением порядка C++
C++ Записать в файл S сначала компонент файла F, затем компонент файла G, с сохранением порядка

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9371 / 5421 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
13.02.2011, 16:09     создать 3 файла,а затем переместить информацию из 1 во 2, из 2 в 3, из 3 в 1. #7
Цитата Сообщение от enotik Посмотреть сообщение
а в сообщении easybudda я вовсе ничего не поняла.
а там всё просто на самом-то деле: функция rename() файлы переименовывает. Это происходит значительно быстрее, чем перемещение содержимого из одного файла в другой.
Yandex
Объявления
13.02.2011, 16:09     создать 3 файла,а затем переместить информацию из 1 во 2, из 2 в 3, из 3 в 1.
Ответ Создать тему
Опции темы

Текущее время: 09:17. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru