Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.54/13: Рейтинг темы: голосов - 13, средняя оценка - 4.54
800 / 530 / 157
Регистрация: 27.01.2015
Сообщений: 3,025
Записей в блоге: 1
1

Запись текста в бинарный файл

21.03.2015, 12:14. Просмотров 2364. Ответов 13
Метки нет (Все метки)

Есть программа, она должна записывать в бин файл, обычную строку.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <iomanip>
#include <fstream>
#include <windows.h>
using namespace std;
 
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    fstream file("TEST.TXT", ios::binary | ios::in | ios::out);
    char str[80];
    cin.getline(str, 80); // вводим строку
    file.write((char*)str, 80); // пытаемся занести ее в файл
    for (short i(0); i < 80; str[i++] = 0); // опустошаем массив
    file.read((char*)str, 80); // заполняем массив инфой, считаной из файла
    cout << str << endl; // fail =(
    system("pause");
    return 0;
}
Но выводятся крокозябры, объясните.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.03.2015, 12:14
Ответы с готовыми решениями:

Запись в бинарный файл
Всем привет. Подскажите пожалста как через fstream добавить запись в бинарный файл ? нужно...

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

Запись в бинарный файл
Скажите пожалуйста, правильно ли работает моя программа? (Имеется ввиду запись в бинарный файл) ...

Запись в бинарный файл
Подскажите как записать данные из StringGrid в бинарный файл и компоновка допустим из 2 StringGrid ...

13
Эксперт PHP
2856 / 2441 / 1144
Регистрация: 14.05.2014
Сообщений: 6,905
Записей в блоге: 1
21.03.2015, 12:30 2
Ferrari F1, у TEST.TXT кодировка какая? А еще попробуйте перед записью в файл вывести строку в консоль.
0
Эксперт С++
4966 / 3072 / 456
Регистрация: 10.11.2010
Сообщений: 11,159
Записей в блоге: 10
21.03.2015, 12:37 3
"Перемотай" после записи:
C++
1
    file.seekg( 0 );
0
800 / 530 / 157
Регистрация: 27.01.2015
Сообщений: 3,025
Записей в блоге: 1
21.03.2015, 12:49  [ТС] 4
castaway, а еще вопрос
можно ли создать текстовый файл (не бинарный) через определение
C++
1
fstream file("TEST.TXT", ios::in | ios::out);
Добавлено через 7 минут
Например, почему нельзя написать так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <iomanip>
#include <fstream>
#include <windows.h>
using namespace std;
 
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    fstream file("TEST.TXT", ios::out | ios::in);
    char str[80];
    cin.getline(str, 80);
    file << str;
    for (short i(0); i < 80; str[i++] = 0);
    file >> str;
    cout << str << endl;
    system("pause");
    return 0;
}
0
Модератор
Эксперт С++
10150 / 8499 / 5165
Регистрация: 18.12.2011
Сообщений: 22,739
21.03.2015, 13:03 5
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
fstream file;
    file.open("TEST.TXT", ios::out | ios::in); // файл должен существовать, если его нет, то не откроется
    if(file)
    {
        char str[80];
        cin.getline(str, 80);
        file << str;               // пришем поверх того, что уже есть в файле
        file.seekp(0,ios::beg);    // перемещаемся на начало файла
        for (short i(0); i < 80; str[i++] = 0);
        file >> str;
        file.close();
        cout << str << endl;
    }
0
Эксперт С++
4966 / 3072 / 456
Регистрация: 10.11.2010
Сообщений: 11,159
Записей в блоге: 10
21.03.2015, 13:05 6
Цитата Сообщение от Ferrari F1 Посмотреть сообщение
Например, почему нельзя написать так:
Кто сказал что нельзя? Можно, если файл существует и он текстовый. +
Цитата Сообщение от castaway Посмотреть сообщение
"Перемотай"
C++
1
file.seekg( 0 );
Цитата Сообщение от Ferrari F1 Посмотреть сообщение
можно ли создать текстовый файл (не бинарный) через определение
Можно, только без флага ios::in:
C++
1
fstream file("TEST.TXT", ios::out);
0
6913 / 5978 / 2709
Регистрация: 14.04.2014
Сообщений: 25,504
21.03.2015, 13:07 7
Почему без флага ios::in?
0
800 / 530 / 157
Регистрация: 27.01.2015
Сообщений: 3,025
Записей в блоге: 1
21.03.2015, 13:14  [ТС] 8
zss,
а
C++
1
2
fstream file;
file.open("TEST.TXT", ios::out | ios::in);
и
C++
1
fstream file("TEST.TXT", ios::out | ios::in);
Это ведь по сути одно и то же?

Добавлено через 5 минут
zss,
C++
1
file.seekp(0);
а seekg() можно использовать к такому файлу?
0
Эксперт С++
4966 / 3072 / 456
Регистрация: 10.11.2010
Сообщений: 11,159
Записей в блоге: 10
21.03.2015, 13:16 9
Цитата Сообщение от nmcf Посмотреть сообщение
Почему без флага ios::in?
Так работает fstream. Файл создаётся только с флагом ios::out или ios::trunc. (ссыль)
1
800 / 530 / 157
Регистрация: 27.01.2015
Сообщений: 3,025
Записей в блоге: 1
21.03.2015, 13:51  [ТС] 10
castaway, zss,
Запись текста в бинарный файл
0
Модератор
Эксперт С++
10150 / 8499 / 5165
Регистрация: 18.12.2011
Сообщений: 22,739
21.03.2015, 14:04 11
file.open() позволяет использовать переменную file многократно:
Закрыть один файл и открыть другой, или тот же, но для другого типа доступа.

Я так и не понял, чем seekp отличается от seekg.
0
Эксперт С++
4966 / 3072 / 456
Регистрация: 10.11.2010
Сообщений: 11,159
Записей в блоге: 10
21.03.2015, 14:11 12
Ferrari F1, en.cppreference.com
1
6913 / 5978 / 2709
Регистрация: 14.04.2014
Сообщений: 25,504
21.03.2015, 17:24 13
Цитата Сообщение от zss Посмотреть сообщение
Я так и не понял, чем seekp отличается от seekg
У потока два указателя - для чтения и для записи, соответственно две функции.
0
800 / 530 / 157
Регистрация: 27.01.2015
Сообщений: 3,025
Записей в блоге: 1
21.03.2015, 18:12  [ТС] 14
zss, а еще есть функции tellg() и tellp(), возвращающие численное значение (в байтах) относительно начала файла соотв. указателя.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.03.2015, 18:12

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Запись в бинарный файл
Здравствуйте. Прошу помочь разобраться с проблемой. Необходимо записать в двоичный файл...

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

Запись в бинарный файл
Подскажите пожалуйста,где в коде ошибка??никак найти не могу почему х не считает. В файл...

Запись в бинарный файл
Помогите приделает функцию что бы она записывала не в обычный файл а в бинарный, уже три чеса сижу...


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

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

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