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

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

Восстановить пароль Регистрация
 
anastasia_b
1 / 1 / 0
Регистрация: 28.04.2013
Сообщений: 45
31.05.2014, 15:51     Добавить заголовок для произвольного файла #1
Добрый день! Помогите пожалуйста разобраться, почему не работает программа.
Для произвольного файла, используя класс 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();
}
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
dzrkot
zzzZZZ...
 Аватар для dzrkot
516 / 346 / 53
Регистрация: 11.09.2013
Сообщений: 1,977
31.05.2014, 16:13     Добавить заголовок для произвольного файла #2
Цитата Сообщение от anastasia_b Посмотреть сообщение
ть заголовок размером 100 байт.
Цитата Сообщение от anastasia_b Посмотреть сообщение
нужно разработать метод, позволяющий добавить заголовок размером 100 байт.
что в файле то? ...вам придётся сначала его прочитать, сохранить, потом заного его переписать вставив в начало заголовок
zss
Модератор
Эксперт С++
 Аватар для zss
5942 / 5547 / 1783
Регистрация: 18.12.2011
Сообщений: 14,159
Завершенные тесты: 1
31.05.2014, 16:21     Добавить заголовок для произвольного файла #3
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от dzrkot Посмотреть сообщение
вам придётся сначала его прочитать
Лучше создать новый файл, записать заголовок,
потом записать содержимое нужного файла.
Старый файл удалить, а новый переименовать.
dzrkot
zzzZZZ...
 Аватар для dzrkot
516 / 346 / 53
Регистрация: 11.09.2013
Сообщений: 1,977
31.05.2014, 16:32     Добавить заголовок для произвольного файла #4
Цитата Сообщение от zss Посмотреть сообщение
Лучше создать новый файл, записать заголовок,
потом записать содержимое нужного файла.
Старый файл удалить, а новый переименовать.
Цитата Сообщение от anastasia_b Посмотреть сообщение
Для произвольного файла, используя класс fstream, нужно разработать метод, позволяющий добавить заголовок размером 100 байт.
ну я исходил из этого, так то да)
anastasia_b
1 / 1 / 0
Регистрация: 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;
}
zss
Модератор
Эксперт С++
 Аватар для zss
5942 / 5547 / 1783
Регистрация: 18.12.2011
Сообщений: 14,159
Завершенные тесты: 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;
}
Yandex
Объявления
31.05.2014, 18:24     Добавить заголовок для произвольного файла
Ответ Создать тему
Опции темы

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