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

файлы в c++ - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 17, средняя оценка - 4.94
c0der
 Аватар для c0der
1 / 1 / 1
Регистрация: 03.08.2010
Сообщений: 41
24.07.2011, 11:51     файлы в c++ #1
есть текстовый файл.
нужно создать другой текстовый файл и переписать, определенное количество символов.
файл читать в произвольном доступе с помощью seekg. и сразу символы, переписывать из одного в другой файл.
----
как я токо не пытался. то файл создает полностью пустым, то с одними нулями, то с кракозябрами и тд.

в php эта функция $a = fread("1.txt",500); // переменная а получает 500 символов из файла
а нужно типо этого file_put_contents("2.txt",$a);

если не трудно покажите пожалуйста примерчик
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.07.2011, 11:51     файлы в c++
Посмотрите здесь:

C++ Файлы
C++ Файлы
C++ файлы
Файлы.Текстовые файлы C++
C++ Файлы
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ValeryLaptev
Эксперт C++
1005 / 784 / 46
Регистрация: 30.04.2011
Сообщений: 1,595
24.07.2011, 12:41     файлы в c++ #2
c0der, а ты книжку открывал? Режимы открытия читал? Разницу между текстовыми и бинарными знаешь?
И уточни, русские буквы в файле могут быть? Ибо дополнительные действия по локализации нужно делать.
c0der
 Аватар для c0der
1 / 1 / 1
Регистрация: 03.08.2010
Сообщений: 41
24.07.2011, 13:04  [ТС]     файлы в c++ #3
setlocale(0,""); с русскими буквами проблем нет.
файл открывается в бинарном режиме
ну так, как сделать то ?
ValeryLaptev
Эксперт C++
1005 / 784 / 46
Регистрация: 30.04.2011
Сообщений: 1,595
24.07.2011, 13:23     файлы в c++ #4
c0der, сначала напиши текст проги просто с открытием и закрытием - надо видеть, как ты это делаешь.
CoffeeSamurai
2 / 2 / 0
Регистрация: 04.04.2011
Сообщений: 19
24.07.2011, 14:29     файлы в c++ #5
Есть функция, называется fgetc(). Она читает посимвольно из файла. Создаешь цикл, который будет повторятся ровно столько, сколько тебе нужно считать из файла символов, и будет тебе счастье.
C++
1
2
3
4
5
6
7
8
9
10
11
#include<stdio.h>
 
int main()
{
    FILE *fr=fopen("file_read.txt", "r"); // Открываешь файл из которого будешь читать
    FILE *fw=fopen("file_write.txt", "w");  // Создаешь файл в который будешь записывать
    char symbols[21]; // Символьный массив для записи в него символов из файла
    for(int i=0; i<20; i++) symbols[i]=fgetc(fr) ; // Читаешь 20 символов
    fprintf(fw, "%s", symbols); // Записываешь то что прочитал в другой файл
    return 0;
}
Gepar
 Аватар для Gepar
1173 / 529 / 20
Регистрация: 01.07.2009
Сообщений: 3,512
24.07.2011, 14:53     файлы в c++ #6
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <string>
#include <fstream>
#include <iomanip>
 
using namespace std;
 
int main()
{
    ifstream file1("file.txt");
    ofstream file2("file2.txt");
    file1.seekg(0); //ставишь в нужное место курсор в файле откуда копировать
    string temp;
    int n=3; //задаёшь сколько надо символов скопировать
    file1>>setw(n)>>temp;
    file2<<temp; //записываешь во второй файл те символы
}
Как писать напрямую в другой файл без всяких переменных я не знаю, если кто напишет то мне тоже будет интересно посмотреть такой пример.
m1Rr0r
 Аватар для m1Rr0r
247 / 230 / 15
Регистрация: 05.02.2010
Сообщений: 3,213
Завершенные тесты: 2
24.07.2011, 15:11     файлы в c++ #7
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <fstream>
#include <iomanip>
 
using namespace std;
 
int main (int argc, char *argv[])  {
 
    ifstream inp("C:\\test.txt");
    ofstream out("C:\\test2.txt");
 
    while(!inp.eof())
        out.put(inp.get());
 
    inp.close();
    out.close();
    return 0;
}
без переменной можно так вроде...
c0der
 Аватар для c0der
1 / 1 / 1
Регистрация: 03.08.2010
Сообщений: 41
24.07.2011, 15:29  [ТС]     файлы в c++ #8
Цитата Сообщение от Gepar Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <string>
#include <fstream>
#include <iomanip>
 
using namespace std;
 
int main()
{
    ifstream file1("file.txt");
    ofstream file2("file2.txt");
    file1.seekg(0); //ставишь в нужное место курсор в файле откуда копировать
    string temp;
    int n=3; //задаёшь сколько надо символов скопировать
    file1>>setw(n)>>temp;
    file2<<temp; //записываешь во второй файл те символы
}
Как писать напрямую в другой файл без всяких переменных я не знаю, если кто напишет то мне тоже будет интересно посмотреть такой пример.
спасибо конечно, но если файл 200 мбайт то и у оперативки-200мбайт.
по этому я и спрашивал из файла в файл, чтобы сэкономить ее.

Добавлено через 2 минуты
Цитата Сообщение от CoffeeSamurai Посмотреть сообщение
Есть функция, называется fgetc(). Она читает посимвольно из файла. Создаешь цикл, который будет повторятся ровно столько, сколько тебе нужно считать из файла символов, и будет тебе счастье.
C++
1
2
3
4
5
6
7
8
9
10
11
#include<stdio.h>
 
int main()
{
    FILE *fr=fopen("file_read.txt", "r"); // Открываешь файл из которого будешь читать
    FILE *fw=fopen("file_write.txt", "w");  // Создаешь файл в который будешь записывать
    char symbols[21]; // Символьный массив для записи в него символов из файла
    for(int i=0; i<20; i++) symbols[i]=fgetc(fr) ; // Читаешь 20 символов
    fprintf(fw, "%s", symbols); // Записываешь то что прочитал в другой файл
    return 0;
}
а как ты fgetc'у говоришь откуда читать. а если файл много раз так прогонять от начала до конца. как ему задать положение курсора откуда будет идти чтение?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.07.2011, 21:35     файлы в c++
Еще ссылки по теме:

Заголовочные файлы и файлы cpp C++
C++ Зачем нужно добавлять файлы в файлы исходного кода

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

Или воспользуйтесь поиском по форуму:
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4237 / 2770 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
24.07.2011, 21:35     файлы в c++ #9
Цитата Сообщение от Gepar Посмотреть сообщение
Как писать напрямую в другой файл без всяких переменных я не знаю, если кто напишет то мне тоже будет интересно посмотреть такой пример.
Только без счетчика символов, просто весь файл целиком:
C++
1
2
3
std::ofstream os("o.txt");
std::ifstream is("i.txt");
os<<is.rdbuf();
Yandex
Объявления
24.07.2011, 21:35     файлы в c++
Ответ Создать тему
Опции темы

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