Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
anastasia_b
1 / 1 / 1
Регистрация: 28.04.2013
Сообщений: 45
#1

Добавить заголовок для произвольного файла - C++

31.05.2014, 15:51. Просмотров 282. Ответов 5
Метки нет (Все метки)

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

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
#include <iostream>
#include <fstream>
#include <string>
#include <conio.h>
using namespace std;
 
std::fstream addHeader (fstream fs)
{
    fs.seekp(0); 
    char *buffer = new char[100];
    strcpy(buffer,"hello");
    cout << buffer;
    fs.write(buffer, 100);
    return fs;
}
 
void main() 
{
    std::fstream fs;
    fs.open ("1.txt", fstream::out);
    fs << "lalalalalala";
    addHeader (fs);
    fs.close();
}

http://www.cyberforum.ru/cpp-beginners/thread707348.html
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.05.2014, 15:51
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Добавить заголовок для произвольного файла (C++):

Создание файла произвольного доступа
Здравствуйте.Ни как не могу разобраться с файлами произвольного доступа.Но эта...

Создание файла произвольного доступа.
#include &lt;iostream.h&gt; #include &lt;fstream.h&gt; #include &lt;stdlib.h&gt; #define...

Изменение даты создания произвольного файла
Написать программу, изменяющую дату и время создания произвольного файла ...

Чтение данных из произвольного файла с разделителями
Помогите пожалуйста. Нужно написать программу консольного типа, реализующую:...

Сформировать заголовок, отправить его, а затем принять ответный заголовок
День добрый, форумчане. Предо мной задача - сформировать заголовок, отправить...

5
dzrkot
zzzZZZ...
523 / 354 / 94
Регистрация: 11.09.2013
Сообщений: 2,039
31.05.2014, 16:13 #2
Цитата Сообщение от anastasia_b Посмотреть сообщение
ть заголовок размером 100 байт.
Цитата Сообщение от anastasia_b Посмотреть сообщение
нужно разработать метод, позволяющий добавить заголовок размером 100 байт.
что в файле то? ...вам придётся сначала его прочитать, сохранить, потом заного его переписать вставив в начало заголовок
1
zss
Модератор
Эксперт С++
6953 / 6515 / 4136
Регистрация: 18.12.2011
Сообщений: 17,188
Завершенные тесты: 1
31.05.2014, 16:21 #3
Лучший ответ Сообщение было отмечено anastasia_b как решение

Решение

Цитата Сообщение от dzrkot Посмотреть сообщение
вам придётся сначала его прочитать
Лучше создать новый файл, записать заголовок,
потом записать содержимое нужного файла.
Старый файл удалить, а новый переименовать.
1
dzrkot
zzzZZZ...
523 / 354 / 94
Регистрация: 11.09.2013
Сообщений: 2,039
31.05.2014, 16:32 #4
Цитата Сообщение от zss Посмотреть сообщение
Лучше создать новый файл, записать заголовок,
потом записать содержимое нужного файла.
Старый файл удалить, а новый переименовать.
Цитата Сообщение от anastasia_b Посмотреть сообщение
Для произвольного файла, используя класс fstream, нужно разработать метод, позволяющий добавить заголовок размером 100 байт.
ну я исходил из этого, так то да)
0
anastasia_b
1 / 1 / 1
Регистрация: 28.04.2013
Сообщений: 45
31.05.2014, 18:16  [ТС] #5
Вот так можно сделать? И скажите пожалуйста, как это реализовать в виде метода, отдельной функции? У меня в прошлый раз не получилось, то ли неправильно ее вызвала, то ли неправильно объявила..
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
#include <iostream>
#include <fstream>
#include <string>
#include <stdlib.h>
using namespace std;
 
int main() 
{
    ifstream in("1.txt");
    ofstream out("2.txt");
    string str;
    char *buffer = new char[100];
    strcpy(buffer,"hello");
    out << buffer;
    out.seekp(100, ios::beg);
    while (!in.eof())
    {
        getline(in,str);
        out << str;
    }
    in.close();
    out.close();
    system("del 1.txt");
    rename("2.txt", "1.txt");
    return 0;
}
0
zss
Модератор
Эксперт С++
6953 / 6515 / 4136
Регистрация: 18.12.2011
Сообщений: 17,188
Завершенные тесты: 1
31.05.2014, 18:24 #6
Цитата Сообщение от anastasia_b Посмотреть сообщение
out.seekp(100, ios::beg);
Это зачем? Указатель и так там стоит.

Добавлено через 4 минуты
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
void AddHeader(ifstream& in,ofstream& out)
{
    string str;
    char *buffer = new char[100];
    strcpy(buffer,"hello");
    out << buffer;
    out.seekp(100, ios::beg);
    while (!in.eof())
    {
        getline(in,str);
        out << str;
    }
    in.close();
    out.close();
}
int main()
{
    ifstream in("1.txt");
    ofstream out("2.txt");
    if(!in || !out)
    {
         cout<<"Error";
         return 1;
    }
    AddHeader(in,out);
    system("del 1.txt");
    rename("2.txt", "1.txt");
    return 0;
}
1
31.05.2014, 18:24
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.05.2014, 18:24
Привет! Вот еще темы с решениями:

Корень произвольного степени из произвольного числа, введенного с клавиатуры
Не применяя встроенных функций, найти корень произвольного степени из...

Как прочитать заголовок бинарного файла в формате TIFF?
нужно считать заголовок *.tif - файла... открываю как поток для чтения...

Поогите написать программу считывания произвольного количества строк из текстового файла
Ну вводиш в программу файл например формата txt. В этом файле что то...

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


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

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

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