Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
0 / 0 / 0
Регистрация: 27.04.2020
Сообщений: 57
1

Проблема с бинарным файлом, выводит непонятные символы

01.07.2020, 19:37. Показов 1976. Ответов 1
Метки нет (Все метки)

Возникла проблема, что в текстовом файле выводится все хорошо, но в бинарном файле не очень красиво, непонятные символы,удаляет некоторые буквы и так далле, вот пример:
Политехнический аучный .Семеновская  °
А должно быть:
Политехнический Научный Б.Семеновская 5 1200
Вот код, который сейчас имеется
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
ifstream fin;
ofstream fout, out;
fstream bio;
//---------------------Функция удаления пробелов в начале и конце строки----------—
void filtr(char* Stroka) {
    char Source[255] = ""; //Вспомогательная строка
    int x, x1 = 0, x2 = strlen(Stroka) - 1; // Установка на начало и конец строки;
    while (Stroka[x1] == ' ') x1++;
    while (Stroka[x2] == ' ' || Stroka[x2] == '\n') x2--;
    for (x = x1; x <= x2; x++)
        Source[x - x1] = Stroka[x];
    Source[x - x1] = '\0'; // В конце строки устанавливаем байтовский нуль
    strcpy(Stroka, Source);
};
 
ostream& operator<< (ostream& out, museum& M)
{
    int stick = 0;
    char symb = ' ';
    if (stick) symb = '|';
    out << setiosflags(ios::left) << symb << setw(25) << M.name << symb
        << setw(13) << M.character << symb << setw(20) << M.adres << symb << setw(11)
        << M.price << symb << setw(13) << M.time << symb << endl;
    return out;
}
istream& operator>> (istream& in, museum& M)
{
    in.getline(M.name, 25); filtr(M.name);
    in.getline(M.character, 13); filtr(M.character);
    in.getline(M.adres, 19); filtr(M.adres);
    in >> M.time >> M.price;
    return in;
}
 
 
/*               функция создания текстового файла              */
void sozdat(char* file) {
    out.open(file);
    if (!out)
    {
        cout << "Ошибка при открытии текстового файла\n";
        system("pause");
        fout.close();
        exit(0);
    }
m: cout << "Введите данные одной структуры: " << endl;
    cin >> M;
    out << M;
    cout << "Введите 0 чтобы закончить" << endl;
    char c; c = _getch();
    if (c == '0') { out.close(); return; }
    else goto m;
}
 
/*               функция создания бинарного файла               */
void bin(char* file,char* binar)
{
    fin.open(file);
    if (!fin)
    {
     cout <<endl<< "Ошибка открытия файла данных для чтения";
     exit(1);
    }
    fout.open(binar, ios::binary);
    if (!fout)
    {
     cout <<endl<< "Ошибка открытия бинарного файла для записи";
     exit(2);
    }
    while (fin.peek()!=EOF)
    {
        fin >> M;
        fout.write((char*)&M,sz);
    }
    fin.close();
    fout.close();
}
 
 
/*               функция чтения бинарного файла               */
void cht(char* file, char* binar) {
    n = 0;
    double s = 0;
    fout << "Чтение файла: " << endl;
    fin.open(binar, ios::in | ios::binary);
    if (!fin)
    {
        cout << "Ошибка при открытии бинарного файла\n";
        system("pause");
        fout.close();
        exit(0);
    }
    psh();
    while (fin.read((char*)&M, sz)) {
        fout<<M;
        cout<< M;
        s += M.price;
        n++;
    }
    fin.close();
}
 
 
//Главная функция
 
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    setlocale(LC_ALL, "rus");
    char file[15] = "ish.txt";
    char res[15] = "lr.res";
    char binary[15] = "binary.txt";
    char del_v[15] = "del.txt";
 
    sozdat(file);
    bin(file, binary);
    cht(file, binary);
    //del(del_v, binary);
    kor(res, binary);
    system("pause");
    return 0;
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.07.2020, 19:37
Ответы с готовыми решениями:

Проблема с бинарным/текстовым файлом
Всем привет! Ситуация такова...с ftp загружал бинарные файлы...по невнимательности указал...

Выводит непонятные символы
Нужно вывести слово в обратном порядке, но выводит типа этого

Когда считываю информацию с файла, то выводит в конце непонятные символы
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;string.h&gt; #include...

Непонятные символы. Из файла читаются непонятные символы
#include &lt;iostream&gt; #include &lt;fstream&gt; #include &lt;string&gt; #include &lt;iomanip&gt; using...

1
nd2
3419 / 2799 / 1251
Регистрация: 29.01.2016
Сообщений: 9,426
02.07.2020, 06:47 2
Лучший ответ Сообщение было отмечено Overmousee как решение

Решение

Цитата Сообщение от Overmousee Посмотреть сообщение
но в бинарном файле не очень красиво
Файлы, записанные бинарными методами, не предназначены для разглядывания их в текстовых редакторах.
Цитата Сообщение от Overmousee Посмотреть сообщение
вот пример:
Политехнический аучный .Семеновская  °
Записываются байты под переменными, а не коды символов, поэтому числа так и выглядят, если их выводит текстовый редактор.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.07.2020, 06:47

Непонятные символы. Из файлв читаются непонятные символы
#include &lt;iostream&gt; #include &lt;fstream&gt; #include &lt;string&gt; #include &lt;iomanip&gt; using namespace...

Работа с бинарным файлом
помогите, пожалуйста Дан бинарный файл, содержащий числа а1, b1, a2, b2... Каждая пара чисел a и b...

Работа с бинарным файлом
Добрый день, уважаемые форумчане. Требуется решить задачу с бинарным словарем, а именно. Файл...

Проблемы с бинарным файлом
Приветствую. Проблема заключается в следующем: не хочет открываться бинарный файл. #include...

Помогите с бинарным файлом
Есть задачка звучит так: Вы являетесь владельцем склада металлических изделий и нуждаетесь в...

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


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

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

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