Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

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

есть текстовый файл.
нужно создать другой текстовый файл и переписать, определенное количество символов.
файл читать в произвольном доступе с помощью seekg. и сразу символы, переписывать из одного в другой файл.
----
как я токо не пытался. то файл создает полностью пустым, то с одними нулями, то с кракозябрами и тд.

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

если не трудно покажите пожалуйста примерчик
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.07.2011, 11:51
Здравствуйте! Я подобрал для вас темы с ответами на вопрос файлы в c++ (C++):

Заголовочные файлы .h, файлы исходного когда c/c++ и установление связи между ними - C++
Всем добрый вечер!) Относительно недавно стал изучать c/c++, хочу полюбопытствовать ,так как появился вопрос. Почему при объявлении...

Работа в Visual Studio 2015 - как добавить файлы исходного кода и заголовочные файлы? - C++
Приветствую всех! Столкнулся с тем, что решая задачи по книге Лафоре про графику, не смог добавить файлы .h и .cpp, скачав их с одной из...

Зачем нужно добавлять файлы в файлы исходного кода - C++
Зачем нужно добавлять файлы в файлы исходного кода (кроме main.cpp)? И как вызвать из main.cpp другой файл?

Заголовочные файлы и файлы cpp - C++
Со временем сложилось представление что при написании программ стоит разделять МЕТА данные и данные, но для лучшего понимания своих...

Раздельная компиляция: что помещать в заголовочные файлы, а что в файлы реализации (исходники)? - C++
Здравствуйте, я учусь пользоваться Visual Studio.Пишу программу, в которой создаются и разрушаются объекты, определенного пользователем...

нужно переделать код (из Файлы текстовые (FILE*) в Файлы текстовые (потоки)) - C++
вот задание для программы: 6. Задан текстовый файл input.txt. Требуется определить строки этого файла, содержащие максимальную по длине...

8
ValeryLaptev
Эксперт С++
1042 / 821 / 48
Регистрация: 30.04.2011
Сообщений: 1,659
24.07.2011, 12:41 #2
c0der, а ты книжку открывал? Режимы открытия читал? Разницу между текстовыми и бинарными знаешь?
И уточни, русские буквы в файле могут быть? Ибо дополнительные действия по локализации нужно делать.
0
c0der
1 / 1 / 1
Регистрация: 03.08.2010
Сообщений: 41
24.07.2011, 13:04  [ТС] #3
setlocale(0,""); с русскими буквами проблем нет.
файл открывается в бинарном режиме
ну так, как сделать то ?
0
ValeryLaptev
Эксперт С++
1042 / 821 / 48
Регистрация: 30.04.2011
Сообщений: 1,659
24.07.2011, 13:23 #4
c0der, сначала напиши текст проги просто с открытием и закрытием - надо видеть, как ты это делаешь.
0
CoffeeSamurai
2 / 2 / 0
Регистрация: 04.04.2011
Сообщений: 19
24.07.2011, 14:29 #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;
}
0
Gepar
1177 / 533 / 20
Регистрация: 01.07.2009
Сообщений: 3,517
24.07.2011, 14:53 #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; //записываешь во второй файл те символы
}
Как писать напрямую в другой файл без всяких переменных я не знаю, если кто напишет то мне тоже будет интересно посмотреть такой пример.
0
m1Rr0r
247 / 230 / 15
Регистрация: 05.02.2010
Сообщений: 3,262
Завершенные тесты: 2
24.07.2011, 15:11 #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;
}
без переменной можно так вроде...
0
c0der
1 / 1 / 1
Регистрация: 03.08.2010
Сообщений: 41
24.07.2011, 15:29  [ТС] #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'у говоришь откуда читать. а если файл много раз так прогонять от начала до конца. как ему задать положение курсора откуда будет идти чтение?
0
Kastaneda
Jesus loves me
Эксперт С++
4689 / 2893 / 236
Регистрация: 12.12.2009
Сообщений: 7,357
Записей в блоге: 2
Завершенные тесты: 1
24.07.2011, 21:35 #9
Цитата Сообщение от Gepar Посмотреть сообщение
Как писать напрямую в другой файл без всяких переменных я не знаю, если кто напишет то мне тоже будет интересно посмотреть такой пример.
Только без счетчика символов, просто весь файл целиком:
C++
1
2
3
std::ofstream os("o.txt");
std::ifstream is("i.txt");
os<<is.rdbuf();
0
24.07.2011, 21:35
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.07.2011, 21:35
Привет! Вот еще темы с ответами:

Файлы.Текстовые файлы - C++
Считая t текстовым файлом (файлом типа text), ответить на следующие вопросы: А)Кроме текстовых файлов,файлы какиъ еще типов могут...

Файлы - C++
Подскажите идею сортировки в файле через структруру,слов по длине.Сижу не могу сделать никак может как нибудь с помощью функции qsort.Не...

Файлы в С - C++
Напишите, пожалуйста, программу для копирования содержимого одного файла в другой файл в обратном порядке (на С).

Файлы С++ - C++
как вывести на экран m последних строк из файла(с++) зарание спасибо))


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

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