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

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

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

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

10.01.2014, 22:38. Просмотров 546. Ответов 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;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.01.2014, 22:38     Вывод элементов бинарного файла на экран
Посмотрите здесь:

C++ Запись массива в виде бинарного дерева и вывод его на экран!
Простой вывод файла на экран C++
C++ Вывод на экран чисел из файла
Вывод на экран содержимого файла C++
Вывести массив на экран из бинарного файла C++
C++ Неправильный вывод из бинарного файла
C++ Чтение бинарного файла в поток std::ifstream и вывод в другой бинарный файл std::ofstream (создание копии)
C++ Вывод массива из файла на экран
C++ Вывод содержимого файла на экран
Вывод на экран данных их бинарного файла C++
Заполнение бинарного файла структурой и вывод его на экран C++
C++ вывод из файла на экран

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

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

Добавлено через 2 минуты
Цитата Сообщение от Tulosba Посмотреть сообщение
не стоит поэлементно читать/писать в файл.
Можно и поэлементно.
Tulosba
:)
Эксперт С++
4384 / 3227 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
10.01.2014, 22:55     Вывод элементов бинарного файла на экран #5
Цитата Сообщение от alsav22 Посмотреть сообщение
Можно и поэлементно.
Можно, но...
Цитата Сообщение от Tulosba Посмотреть сообщение
не стоит
alsav22
5411 / 4807 / 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;
}
Yandex
Объявления
10.01.2014, 23:19     Вывод элементов бинарного файла на экран
Ответ Создать тему
Опции темы

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