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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 17, средняя оценка - 4.94
c0der
 Аватар для c0der
1 / 1 / 1
Регистрация: 03.08.2010
Сообщений: 41
#1

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

24.07.2011, 11:51. Просмотров 2036. Ответов 8
Метки нет (Все метки)

есть текстовый файл.
нужно создать другой текстовый файл и переписать, определенное количество символов.
файл читать в произвольном доступе с помощью 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++
C++ файлы
ФАЙЛЫ C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ValeryLaptev
Эксперт С++
1016 / 795 / 48
Регистрация: 30.04.2011
Сообщений: 1,614
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
Эксперт С++
1016 / 795 / 48
Регистрация: 30.04.2011
Сообщений: 1,614
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
1175 / 531 / 20
Регистрация: 01.07.2009
Сообщений: 3,515
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,238
Завершенные тесты: 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++
Еще ссылки по теме:

Файлы.Текстовые файлы C++
C++ Файлы
Файлы C++
Заголовочные файлы и файлы cpp C++
Раздельная компиляция: что помещать в заголовочные файлы, а что в файлы реализации (исходники)? C++

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

Или воспользуйтесь поиском по форуму:
Kastaneda
Форумчанин
Эксперт С++
 Аватар для Kastaneda
4252 / 2784 / 219
Регистрация: 12.12.2009
Сообщений: 7,109
Записей в блоге: 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++
Ответ Создать тему
Опции темы

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