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

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

Войти
Регистрация
Восстановить пароль
 
anastasia_b
1 / 1 / 0
Регистрация: 28.04.2013
Сообщений: 45
#1

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

31.05.2014, 15:51. Просмотров 232. Ответов 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();
}
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.05.2014, 15:51     Добавить заголовок для произвольного файла
Посмотрите здесь:

Как прочитать заголовок бинарного файла в формате TIFF? C++
C++ Добавить в конец первого файла содержимое второго файла
C++ Создание файла произвольного доступа.
Функция для произвольного аргумента. C++
C++ Изменение даты создания произвольного файла
C++ В данный класс добавить код для построчного чтения из файла
C++ вычислить у = sin x для произвольного числа х
Поогите написать программу считывания произвольного количества строк из текстового файла C++
C++ Корень произвольного степени из произвольного числа, введенного с клавиатуры
C++ Сформировать заголовок, отправить его, а затем принять ответный заголовок
Разработать программу, выполняющую чтение и вывод из произвольного текстового файла символьных строк C++
Создание файла произвольного доступа C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
dzrkot
zzzZZZ...
518 / 348 / 53
Регистрация: 11.09.2013
Сообщений: 1,995
31.05.2014, 16:13     Добавить заголовок для произвольного файла #2
Цитата Сообщение от anastasia_b Посмотреть сообщение
ть заголовок размером 100 байт.
Цитата Сообщение от anastasia_b Посмотреть сообщение
нужно разработать метод, позволяющий добавить заголовок размером 100 байт.
что в файле то? ...вам придётся сначала его прочитать, сохранить, потом заного его переписать вставив в начало заголовок
zss
Модератор
Эксперт С++
6248 / 5851 / 1891
Регистрация: 18.12.2011
Сообщений: 14,994
Завершенные тесты: 1
31.05.2014, 16:21     Добавить заголовок для произвольного файла #3
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от dzrkot Посмотреть сообщение
вам придётся сначала его прочитать
Лучше создать новый файл, записать заголовок,
потом записать содержимое нужного файла.
Старый файл удалить, а новый переименовать.
dzrkot
zzzZZZ...
518 / 348 / 53
Регистрация: 11.09.2013
Сообщений: 1,995
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
Модератор
Эксперт С++
6248 / 5851 / 1891
Регистрация: 18.12.2011
Сообщений: 14,994
Завершенные тесты: 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     Добавить заголовок для произвольного файла
Ответ Создать тему
Опции темы

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