Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

Вывод элементов бинарного файла на экран - C++

10.01.2014, 22:38. Просмотров 909. Ответов 5
Метки нет (Все метки)

После ввода на экран элементов файла, окно пропадает. Подскажите пожалуйста как вывести на экран элементы нового файла f1. Заранее спасибо.
ЛАЙК каждому ответившему)
Задание
Задан бинарный файл с отрицательными и положительными целые числа. Записать в другой бинарный файл сначала отрицательные элементы, а потом положительные.
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
#include <cstdlib>
#include <stdio.h>
#include <fstream>
#include <conio.h>
using namespace std;
int newnew()
{
    FILE *f;
    int size=20;
    int a[20];
    f=fopen("D:\\test.dat", "wb");//открываем бинарный файл для ввода
    for(int i = 0; i<size; ++i)
    {
            printf("%s%d%s\n","Enter element [",i,"]:");
            scanf("%d",&a[i]);//вводим  числа нашего будущего файла
            fwrite(&a[i], sizeof(int),1,f);//записываем в наш файл
    }
    fclose(f);
    return 0;
}
int outin()
{
    FILE *f;
    FILE *f1;
    int a[20];
    int size=20;
    int d=0;
    f = fopen("D:\\test.dat", "rb");
    if (f)
    {
        f1=fopen("D:\\test1.dat", "wb");
        while (fread(&a,sizeof(int), 1, f))//считуем числа с первого бинара
        {
            for(int i=0;i<size;i++)//пробежались по элементам
            {
                if(a[i]>0)
                 {
                   fwrite(&a, sizeof(int), 1, f1);//записываем во второй файл
                 }
                if(a[i]<0)
                 {
                   fwrite(&a, sizeof(int), 1, f1);//записывем во втрой  файл
                 }
                fclose(f);
                fclose(f1);
                
            }
        }
    }
    return 0;
}
int main()
{   
    newnew();
    outin();
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.01.2014, 22:38
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Вывод элементов бинарного файла на экран (C++):

Вывод на экран данных их бинарного файла - C++
Привет, народ. Выручайте пожалуйста. Никак не могу сообразить, как вывести на экран данные из бинарного файла. В файле находятся записи...

Вывод символов на на экран с бинарного файла - C++
В бинарном файле записаны данные,таблица.Когда вывожу на экран вместо цифр значки.Как исправить?

Заполнение бинарного файла структурой и вывод его на экран - C++
мне нужно создать бинарник с заполненной структурой. вроде, заполняю правильно, а с выводом на экран не разобрался, да и как мне потом...

Неправильный вывод из бинарного файла - C++
#include&lt;iostream&gt; #include&lt;fstream&gt; #include&lt;stdio.h&gt; #include&lt;iomanip&gt; int main(){ std::cout&lt;&lt;&quot;PE Reader\n&quot;; ...

Вывод бинарного файла на консоль - C++
Имеется структура typedef struct { int n; char name; double price; int amountRealizedGoods; ...

Вывести массив на экран из бинарного файла - C++
2. Компоненты заданного бинарного файла – массивы, состоящие из 4 вещественных чисел каждый. Вывести на экран сумму вторых элементов всех...

5
alsav22
5437 / 4832 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
10.01.2014, 22:47 #2
Vleind1, вперемежку пишите отрицательные и положительные числа, а нужно: сначала все отрицательные, потом все положительные.
1
Tulosba
:)
Эксперт С++
4705 / 3240 / 297
Регистрация: 19.02.2013
Сообщений: 9,046
10.01.2014, 22:48 #3
Цитата Сообщение от Vleind1 Посмотреть сообщение
окно пропадает.
добавьте "паузу" перед выходом например:
C++
1
std::system("pause"); // <cstdlib>
А по коду: не стоит поэлементно читать/писать в файл. Считайте сразу 20 чисел. Потом обрабатывайте.
К тому же, при чтении у Вас ошибка, массив реально не заполняется.
1
alsav22
5437 / 4832 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
10.01.2014, 22:53 #4
И чтение\запись неверно сделаны.

Добавлено через 2 минуты
Цитата Сообщение от Tulosba Посмотреть сообщение
не стоит поэлементно читать/писать в файл.
Можно и поэлементно.
1
Tulosba
:)
Эксперт С++
4705 / 3240 / 297
Регистрация: 19.02.2013
Сообщений: 9,046
10.01.2014, 22:55 #5
Цитата Сообщение от alsav22 Посмотреть сообщение
Можно и поэлементно.
Можно, но...
Цитата Сообщение от Tulosba Посмотреть сообщение
не стоит
1
alsav22
5437 / 4832 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
10.01.2014, 23:19 #6
Цитата Сообщение от Tulosba Посмотреть сообщение
Можно, но...
Даже спорить не хочется...
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
#include <cstdlib>
#include <stdio.h>
#include <conio.h>
 
const int size = 20;
 
int newnew()
{
    FILE *f;
    int a;
    f=fopen("D:\\test.dat", "wb");//открываем бинарный файл для ввода
    for(int i = 0; i<size; ++i)
    {
            printf("%s%d%s\n","Enter element [",i,"]:");
            scanf("%d",&a);//вводим  числа нашего будущего файла
            fwrite(&a, sizeof(int),1,f);//записываем в наш файл
    }
    fclose(f);
    return 0;
}
 
int outin()
{
    FILE *f;
    FILE *f1;
    int a;
    f = fopen("D:\\test.dat", "rb");
    if (f)
    {
        f1 = fopen("D:\\test1.dat", "wb");
        while (fread(&a, sizeof(int), 1, f))//считуем числа с первого бинара
        {
            if(a < 0)
                fwrite(&a, sizeof(int), 1, f1);//записывем во втрой  файл отрицательные числа
        }
        rewind(f);
        while (fread(&a, sizeof(int), 1, f)) //считуем числа с первого бинара
        {
            if(a > 0)
                fwrite(&a, sizeof(int), 1, f1); //записывем во втрой  файл положительные числа
        }
        fclose(f);
        fclose(f1);
 
    }
    return 0;
}
int main()
{   
    newnew();
    outin();
 
    FILE *f1;
    int a;
    f1 = fopen("D:\\test1.dat", "rb");
    while (fread(&a, sizeof(int), 1, f1))
        printf("%d ", a);
    
    getchar();
    getchar();
    return 0;
}
1
10.01.2014, 23:19
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.01.2014, 23:19
Привет! Вот еще темы с ответами:

Запись массива в виде бинарного дерева и вывод его на экран! - C++
Задача: Зарандомить массив с 30 ел... от -100 до 100, создать бинарное дерево использую дан. массив, Вывод массива и дерева на экран.. ...

Создание бинарного дерева из бинарного файла - C++
struct Bin { string name; string city; int players; int score; }; void ReadFromBin(Point*&amp; Tree) { Bin q;

Создание бинарного дерево из бинарного файла - C++
struct Bin { string name; string city; int players; int score; }; void ReadFromBin(Point*&amp; Tree) { ...

Чтение бинарного файла в поток std::ifstream и вывод в другой бинарный файл std::ofstream (создание копии) - C++
Проверил работу программы на маленькой картинке(744 байт). Все работает. С несколько бОльшими файлами(512КБ) нет. Суть задачи в том,...


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

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

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