Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
21 / 19 / 6
Регистрация: 25.11.2017
Сообщений: 708
1

Проблема со считыванием данных из файла

12.03.2021, 11:35. Показов 614. Ответов 11
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Задача заключается в следующем есть файл, в нем записаны числа в виде [0х35, 0х30, 0х30, 0х30,0х30,0х35, 0х30,0х30,0х36], то есть получится должно при считывании в массив [500, 5, 6].
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
int main()
{
ifstream fin;
fin.open(“test.bin”, ios_base :: in | ios_base :: binary);
if(!fin.is_open)
exit(2);
uint16_t *data;
 fin.seekg(0, ios::end);
uint64_t length = fin.tellg();
fin.seekg(0, ios::beg);
data = new uint16_t [length];
int i = 0;
while(!fin.eof())
fin>> data[i++];
return 0;
}
В итоге в массив записывается 0xCD, мусор...
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
12.03.2021, 11:35
Ответы с готовыми решениями:

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

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

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

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

11
Злостный нарушитель
 Аватар для Verevkin
9701 / 5260 / 1199
Регистрация: 12.03.2015
Сообщений: 24,783
12.03.2021, 11:52 2
C++
1
2
3
uint64_t length = fin.tellg(); // размер в байтах 
// ---------
data = new uint16_t [length]; // массив размеров 2×length байт. Зачем?
И чтение в цикkе зачем? Размер файла же известен, прочитай его одним целым куском через метод read().
0
21 / 19 / 6
Регистрация: 25.11.2017
Сообщений: 708
12.03.2021, 12:09  [ТС] 3
Verevkin, все равно мусор...

Добавлено через 57 секунд
C++
1
fin.read((char*)data, length);
0
Злостный нарушитель
 Аватар для Verevkin
9701 / 5260 / 1199
Регистрация: 12.03.2015
Сообщений: 24,783
12.03.2021, 12:10 4
Цитата Сообщение от Andy_Coldfield Посмотреть сообщение
все равно мусор...
бывает
0
21 / 19 / 6
Регистрация: 25.11.2017
Сообщений: 708
12.03.2021, 12:18  [ТС] 5
Verevkin, а как решить тогда)
0
Злостный нарушитель
 Аватар для Verevkin
9701 / 5260 / 1199
Регистрация: 12.03.2015
Сообщений: 24,783
12.03.2021, 12:19 6
Цитата Сообщение от Andy_Coldfield Посмотреть сообщение
а как решить тогда)
Не знаю. Ты ж файл зажал.
0
21 / 19 / 6
Регистрация: 25.11.2017
Сообщений: 708
15.03.2021, 00:18  [ТС] 7
Verevkin, проблема была в том, что изначально я выводил результаты неверно. То есть у меня массив из 20 чисел, и размер выходного файла должен был быть 40 байт. Массив uint16_t. А в файл выводил, число 478 как 0х34, 0х37, 0х38. А корректнее было 0хDE, 0x01.

А вот е подскажите как корректно считать на плюсах данные из файла в массив uin16_t?
Файл приложил
Вложения
Тип файла: rar out.rar (91 байт, 6 просмотров)
0
21 / 19 / 6
Регистрация: 25.11.2017
Сообщений: 708
15.03.2021, 00:32  [ТС] 8
C++
1
2
3
4
5
6
7
8
9
10
11
12
char bytes[2];
    ifstream fin;
    uint16_t val[10] = { 0 };
    fin.open("C:\\PUF\\out.bin", ios_base::in | ios_base :: binary | ios_base::app);
    if (!fin.is_open())
        return 3;
    for (int i = 0; i < 10; i++)
    {
        fin.read((char*)bytes, 2);  
        val[i] = bytes[0] | (bytes[1] << 8);
        cout << val[i];
    }
0
Злостный нарушитель
 Аватар для Verevkin
9701 / 5260 / 1199
Регистрация: 12.03.2015
Сообщений: 24,783
15.03.2021, 00:42 9
Цитата Сообщение от Andy_Coldfield Посмотреть сообщение
А вот е подскажите как корректно считать на плюсах данные из файла в массив uin16_t?
Я в си/с++ не шарю, но думаю, что как-то так:
C++
1
2
3
4
5
6
7
8
9
10
11
    ifstream fin;
    uint16_t val[10] = { 0 };
    fin.open("C:\\PUF\\out.bin", ios_base::in | ios_base :: binary | ios_base::app);
    if (!fin.is_open()) return 3;
    
    fin.read(val, sizeof(val)); // как-то так
    
    for (int i = 0; i != sizeof(val); i++)
      cout << val[i] << " ";
 
    fin.close();
0
19409 / 10028 / 2443
Регистрация: 30.01.2014
Сообщений: 17,678
15.03.2021, 00:44 10
Andy_Coldfield,

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 <memory>
 
int main()
{
    std::ifstream fin("out.bin", std::ios::in | std::ios::binary);
    if(!fin.is_open())
        return 2;
 
    fin.seekg(0, std::ios::end);
    size_t length = fin.tellg() / 2;
 
    fin.seekg(0, std::ios::beg);
    std::unique_ptr<uint16_t[]> data( new uint16_t[length] );
 
    fin.read((char*)data.get(), length * 2);
 
    for(size_t i = 0; i < length; ++i)
    {
        std::cout << std::hex << data[i] << ' ';
    }
    return 0;
}
0
21 / 19 / 6
Регистрация: 25.11.2017
Сообщений: 708
15.03.2021, 10:31  [ТС] 11
Verevkin, DrOffset, а как считать в беззнаковый массив данные? То есть через char не совсем корректно. Вместо 500, у меня в массив записывается мусор...

Добавлено через 9 минут
Получается, что место 500, я сначала считываю массив [-12, 1] в cal, а после преобразования у меня записывается в ячейку значение 65438...
0
19409 / 10028 / 2443
Регистрация: 30.01.2014
Сообщений: 17,678
15.03.2021, 11:31 12
Цитата Сообщение от Andy_Coldfield Посмотреть сообщение
Вместо 500, у меня в массив записывается мусор...
В моем коде никакого мусора не записывается.

Цитата Сообщение от Andy_Coldfield Посмотреть сообщение
То есть через char не совсем корректно.
Это никак не влияет.

Цитата Сообщение от Andy_Coldfield Посмотреть сообщение
а после преобразования у меня записывается в ячейку значение 65438...
Без кода нет смысла обсуждать. Показывайте как делаете.
0
15.03.2021, 11:31
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
15.03.2021, 11:31
Помогаю со студенческими работами здесь

Проблема считыванием данных из файла (Fortran 90)
Доброго времени суток. Написал программку по считыванию данных из столбцов столбцов...

Проблема со считыванием записей из файла
Приветствую смотрящих! Решая задачу на обработку файлов столкнулся со следующей проблемой. Во...

Проблема со считыванием данных с терминала
Здравствуйте. Я начинающий, и изучаю программирование на Си по книге С. Кочана и возникла проблема...

Проблема со считыванием файла json в переменную
Всем доброго времени суток! Я пишу (по крайней мере пытаюсь) бота для Discord, используя node.js....

Проблема со считыванием файла JSON ($.getJSON)
Здравствуйте, у меня есть файл goods-f.json, в котором хранятся некоторые товары. Есть скрипт...

Считыванием данных из файла в массив
На днях начал изучать Qt GUI, и столкнулся с проблемой, не могу считать матрицу с файла, может кто...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Проектирование и моделирование
hw_wired 28.01.2025
Введение в моделирование Моделирование представляет собой один из фундаментальных методов научного познания, который позволяет изучать объекты и явления через создание их упрощенных аналогов. В. . .
Алгоритмы и исполнители
hw_wired 28.01.2025
Введение в алгоритмы В современном мире информационных технологий алгоритмы играют основополагающую роль в решении различных задач и автоматизации процессов. Алгоритм представляет собой точную. . .
Хранение информации
hw_wired 28.01.2025
Введение: Роль систем хранения информации в современном мире В современную эпоху цифровых технологий эффективное хранение информации становится одним из ключевых факторов успешного развития любой. . .
Обработка числовой информации
hw_wired 28.01.2025
Введение в обработку числовой информации В современном мире обработка числовой информации стала неотъемлемой частью как профессиональной деятельности, так и повседневной жизни. Электронные таблицы. . .
Мультимедиа
hw_wired 28.01.2025
Введение в мультимедийные технологии В современном мире мультимедийные технологии стали неотъемлемой частью нашей жизни, проникнув во все сферы человеческой деятельности. Термин "мультимедиа". . .
Обработка текстовой информации
hw_wired 28.01.2025
Введение в обработку текстовой информации В современном мире обработка текстовой информации играет фундаментальную роль в различных сферах человеческой деятельности. Текстовые редакторы стали. . .
Обработка графической информации
hw_wired 28.01.2025
Введение в компьютерную графику Компьютерная графика стала неотъемлемой частью современного цифрового мира, пройдя впечатляющий путь развития от простейших черно-белых изображений до сложных. . .
Python в Алгоритмике: Решение задач
hw_wired 28.01.2025
Введение в Python и Алгоритмику В современном мире программирование стало неотъемлемой частью образования и профессионального развития. Python зарекомендовал себя как один из самых популярных и. . .
Компьютер как универсальное устройство для работы с информацией
hw_wired 28.01.2025
Введение в устройство компьютера Компьютер представляет собой универсальное электронное устройство, предназначенное для автоматической обработки информации. В современном мире компьютер стал. . .
Информация и информационные процессы
hw_wired 28.01.2025
Понятие информации и ее виды В современном мире информация является одним из фундаментальных понятий, пронизывающих все сферы человеческой деятельности. Под информацией понимают любые сведения об. . .
Алгоритмика
hw_wired 28.01.2025
Введение: Основы алгоритмики и её роль в информатике В современном мире программирование и алгоритмическое мышление стали неотъемлемой частью образования и профессиональной деятельности. . . .
Информационное моделирование
hw_wired 28.01.2025
Введение в информационное моделирование В современном мире информационное моделирование стало неотъемлемой частью научной, образовательной и профессиональной деятельности. Это мощный инструмент. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru