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

Чтение бинарных файлов - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Вывести на экран квадрат Пифагора — таблицу умножения http://www.cyberforum.ru/cpp-beginners/thread556997.html
1. Написать программу, которая выводит на экран квадрат Пифагора — таблицу умножения. 2. Задан числовой массив А. Составить программу построения одномерного массива, содержащего сначала все отрицательные, затем положительные элементы входного массива. 3. Написать программу, которая проверяет, является ли введенная с клавиатуры строка двоичным числом. 4. Написать программу, которая проверяет,...
C++ Задача на классы всем здравствуйте. не могли бы вы мне помочь с задачей запара времени мало осталось, а сдавать надо. суть такая, есть задачка на классы есть вариант одной задачи которая тупо печатает прямоугольник на экран вот она #include<graphics.h> #include<conio.h> class cline { // объекты int x1, y1 ,x3,y3,x4,y4; int x2, y2 ; http://www.cyberforum.ru/cpp-beginners/thread556968.html
C++ Помогите пожалуйста разобраться с Switch case
Сразу предупрежу ,что я полный ламер) Мне нужно выполнить лабораторку с использованием конструкции switch-case. Вот ее условие: Вычислить и вывести на экран значения аргумента и значения функции, заданной несколькими выражениями, для заданного интервала хн ≤ x ≤ хк и шага dx изменения аргумента. Параметры a, b, c – действительные числа. Вариант 10.(смотри ссылку)...
C++ Функция: Написать функцию next(t, t1, d), которая присваивает параметру t1 время на d секунд больше, чем время t.
Прошу помочь. Ввести структуру time с полями часы, минуты, секунды. Составить и протестировать функции: next(t, t1, d), которая присваивает параметру t1 время на d секунд больше, чем время t. Предусмотреть возможность смены суток. fun(t1, t2, d), которая вычисляет время d, прошедшее от времени t1 до времени t2. Добавлено через 13 часов 42 минуты :(Помогите пожалуйста...
C++ Сортировка по неубыванию http://www.cyberforum.ru/cpp-beginners/thread556874.html
Помогите решить пожалуйста! Только начала изучать С++, а решение нужно уже срочно.... Сначала задаётся число N (1 ≤ N ≤ 100), а затем N целых чисел, по модулю не превышающих 1000. Выведите N чисел в порядке неубывания.
C++ Перевести код на С++ Прошу помощи с переводом кода на С++. Возникают трудности с корректным и правильным переводом кода. Заранее благодарен. AssignFile(f,'b.txt'); Reset(f); while not EOF(f) do ReadLn(f,s); CloseFile(f); i:=0; for c := 'А' to 'Я' do begin подробнее

Показать сообщение отдельно
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
24.04.2012, 11:09     Чтение бинарных файлов
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
#include <iostream>
#include <fstream>
#include <vector>
 
int main()
{
   const std::streampos offset = 5;
   std::ifstream ifs("test_file", std::ios::binary);
   if (!ifs)
   {
      std::cerr << "No file" << std::endl;
      return 1;
   }
   ifs.seekg(0, std::ios::end);
   std::streampos length = ifs.tellg();
   ifs.seekg(0, std::ios::beg);
   if (length > offset)
   {
      ifs.seekg(offset);
      std::vector<char> bin_content(length - offset);
      ifs.read((char*)&bin_content[0], bin_content.size());
      std::ofstream ofs("res_file", std::ios::binary);
      ofs.write((char*)&bin_content[0], bin_content.size());
      ofs.close();
   }
   ifs.close();
}
Bash
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
forever@pterois:~/My_pro1/cpp_pro$ hd test_file 
00000000  7f 45 4c 46 01 01 01 03  00 00 00 00 00 00 00 00  |.ELF............|
00000010  02 00 03 00 01 00 00 00  e2 94 94 e2 95 9e 04 08  |................|
00000020  34 00 00 00 3c 04 04 00  00 00 00 00 34 00 20 00  |4...<.......4. .|
00000030  09 00 28 00 20 00 1d 00  06 00 00 00 34 00 00 00  |..(. .......4...|
00000040  34 d0 90 04 08 34 d0 90  04 08 20 01 00 00 20 01  |4....4.... ... .|
00000050  00 00 05 00 00 00 04 00  00 00 03 00 00 00 54 01  |..............T.|
00000060  00 00 54 d0 91 04 08 54  d0 91 04 08 13 00 00 00  |..T....T........|
00000070  13 00 00 00 04 00 00 00  01 00 00 00 01 00 00 00  |................|
00000080  00 00 00 00 00 d0 90 04  08 00 d0 90 04 08 18 c2  |................|
00000090  a4 03 00 18 c2 a4 03 00  05 00 00 00 00 10 00 00  |................|
000000a0  01 00 00 00 e2 95 aa e2  96 a0 03 00 e2 95 aa d0  |................|
000000b0  9e 08 08 e2 95 aa d0 9e  08 08 20 04 00 00 e2 95  |.......... .....|
000000c0  95 06 00 00 06 00 00 00  00 10 00 00 02 00 00 00  |................|
000000d0  d0 81 e2 96 a0 03 00 d0  81 d0 9e 08 08 d0 81 d0  |................|
000000e0  9e 08 08 00 01 00 00 00  01 00 00 06 00 00 00 04  |................|
000000f0  00 00 00 04 00 00 00 68  01 00 00 68 d0 91 04 08  |.......h...h....|
00000100  68 d0 91 04 08 44 00 00  00 44 00 00 00 04 00 00  |h....D...D......|
00000110  00 04 00 00 00 50 d1 85  74 64 6c e2 94 94 02 00  |.....P..tdl.....|
00000120  6c 40 07 08 6c 40 07 08  4c 37 00 00 4c 37 00 00  |l@..l@..L7..L7..|
00000130  04 00 00 00 04 00 00 00  51 d1 85 74 64 00 00 00  |........Q..td...|
00000140  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000150  00 06 00 00 00 04 00 00  00 52 d1 85 74 64 e2 95  |.........R..td..|
00000160  aa e2 96 a0 03 00 e2 95  aa d0 9e 08 08 e2 95 aa  |................|
00000170  d0 9e 08 08 28 01 00 00  28 01 00 00 04 00 00 00  |....(...(.......|
00000180  01 00 00 00 2f 6c 69 62  2f 6c 64 2d 6c 69 6e 75  |..../lib/ld-linu|
00000190  78 2e 73 6f 2e 32 0a                              |x.so.2.|
00000197
forever@pterois:~/My_pro1/cpp_pro$ ./new 
forever@pterois:~/My_pro1/cpp_pro$ hd res_file 
00000000  01 01 03 00 00 00 00 00  00 00 00 02 00 03 00 01  |................|
00000010  00 00 00 e2 94 94 e2 95  9e 04 08 34 00 00 00 3c  |...........4...<|
00000020  04 04 00 00 00 00 00 34  00 20 00 09 00 28 00 20  |.......4. ...(. |
00000030  00 1d 00 06 00 00 00 34  00 00 00 34 d0 90 04 08  |.......4...4....|
00000040  34 d0 90 04 08 20 01 00  00 20 01 00 00 05 00 00  |4.... ... ......|
00000050  00 04 00 00 00 03 00 00  00 54 01 00 00 54 d0 91  |.........T...T..|
00000060  04 08 54 d0 91 04 08 13  00 00 00 13 00 00 00 04  |..T.............|
00000070  00 00 00 01 00 00 00 01  00 00 00 00 00 00 00 00  |................|
00000080  d0 90 04 08 00 d0 90 04  08 18 c2 a4 03 00 18 c2  |................|
00000090  a4 03 00 05 00 00 00 00  10 00 00 01 00 00 00 e2  |................|
000000a0  95 aa e2 96 a0 03 00 e2  95 aa d0 9e 08 08 e2 95  |................|
000000b0  aa d0 9e 08 08 20 04 00  00 e2 95 95 06 00 00 06  |..... ..........|
000000c0  00 00 00 00 10 00 00 02  00 00 00 d0 81 e2 96 a0  |................|
000000d0  03 00 d0 81 d0 9e 08 08  d0 81 d0 9e 08 08 00 01  |................|
000000e0  00 00 00 01 00 00 06 00  00 00 04 00 00 00 04 00  |................|
000000f0  00 00 68 01 00 00 68 d0  91 04 08 68 d0 91 04 08  |..h...h....h....|
00000100  44 00 00 00 44 00 00 00  04 00 00 00 04 00 00 00  |D...D...........|
00000110  50 d1 85 74 64 6c e2 94  94 02 00 6c 40 07 08 6c  |P..tdl.....l@..l|
00000120  40 07 08 4c 37 00 00 4c  37 00 00 04 00 00 00 04  |@..L7..L7.......|
00000130  00 00 00 51 d1 85 74 64  00 00 00 00 00 00 00 00  |...Q..td........|
00000140  00 00 00 00 00 00 00 00  00 00 00 00 06 00 00 00  |................|
00000150  04 00 00 00 52 d1 85 74  64 e2 95 aa e2 96 a0 03  |....R..td.......|
00000160  00 e2 95 aa d0 9e 08 08  e2 95 aa d0 9e 08 08 28  |...............(|
00000170  01 00 00 28 01 00 00 04  00 00 00 01 00 00 00 2f  |...(.........../|
00000180  6c 69 62 2f 6c 64 2d 6c  69 6e 75 78 2e 73 6f 2e  |lib/ld-linux.so.|
00000190  32 0a                                             |2.|
00000192
Добавлено через 5 минут
Или так если считать байты с 1.

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
#include <iostream>
#include <fstream>
#include <vector>
 
int main()
{
   const std::streampos offset = 5;
   std::ifstream ifs("test_file", std::ios::binary);
   if (!ifs)
   {
      std::cerr << "No file" << std::endl;
      return 1;
   }
   ifs.seekg(0, std::ios::end);
   std::streampos length = ifs.tellg();
   ifs.seekg(0, std::ios::beg);
   if (length > offset)
   {
      ifs.seekg(offset - std::streampos(1));
      std::vector<char> bin_content(length - offset + 1);
      ifs.read((char*)&bin_content[0], bin_content.size());
      std::ofstream ofs("res_file", std::ios::binary);
      ofs.write((char*)&bin_content[0], bin_content.size());
      ofs.close();
   }
   ifs.close();
}
Bash
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
forever@pterois:~/My_pro1/cpp_pro$ hd res_file 
00000000  01 01 01 03 00 00 00 00  00 00 00 00 02 00 03 00  |................|
00000010  01 00 00 00 e2 94 94 e2  95 9e 04 08 34 00 00 00  |............4...|
00000020  3c 04 04 00 00 00 00 00  34 00 20 00 09 00 28 00  |<.......4. ...(.|
00000030  20 00 1d 00 06 00 00 00  34 00 00 00 34 d0 90 04  | .......4...4...|
00000040  08 34 d0 90 04 08 20 01  00 00 20 01 00 00 05 00  |.4.... ... .....|
00000050  00 00 04 00 00 00 03 00  00 00 54 01 00 00 54 d0  |..........T...T.|
00000060  91 04 08 54 d0 91 04 08  13 00 00 00 13 00 00 00  |...T............|
00000070  04 00 00 00 01 00 00 00  01 00 00 00 00 00 00 00  |................|
00000080  00 d0 90 04 08 00 d0 90  04 08 18 c2 a4 03 00 18  |................|
00000090  c2 a4 03 00 05 00 00 00  00 10 00 00 01 00 00 00  |................|
000000a0  e2 95 aa e2 96 a0 03 00  e2 95 aa d0 9e 08 08 e2  |................|
000000b0  95 aa d0 9e 08 08 20 04  00 00 e2 95 95 06 00 00  |...... .........|
000000c0  06 00 00 00 00 10 00 00  02 00 00 00 d0 81 e2 96  |................|
000000d0  a0 03 00 d0 81 d0 9e 08  08 d0 81 d0 9e 08 08 00  |................|
000000e0  01 00 00 00 01 00 00 06  00 00 00 04 00 00 00 04  |................|
000000f0  00 00 00 68 01 00 00 68  d0 91 04 08 68 d0 91 04  |...h...h....h...|
00000100  08 44 00 00 00 44 00 00  00 04 00 00 00 04 00 00  |.D...D..........|
00000110  00 50 d1 85 74 64 6c e2  94 94 02 00 6c 40 07 08  |.P..tdl.....l@..|
00000120  6c 40 07 08 4c 37 00 00  4c 37 00 00 04 00 00 00  |l@..L7..L7......|
00000130  04 00 00 00 51 d1 85 74  64 00 00 00 00 00 00 00  |....Q..td.......|
00000140  00 00 00 00 00 00 00 00  00 00 00 00 00 06 00 00  |................|
00000150  00 04 00 00 00 52 d1 85  74 64 e2 95 aa e2 96 a0  |.....R..td......|
00000160  03 00 e2 95 aa d0 9e 08  08 e2 95 aa d0 9e 08 08  |................|
00000170  28 01 00 00 28 01 00 00  04 00 00 00 01 00 00 00  |(...(...........|
00000180  2f 6c 69 62 2f 6c 64 2d  6c 69 6e 75 78 2e 73 6f  |/lib/ld-linux.so|
00000190  2e 32 0a                                          |.2.|
00000193
 
Текущее время: 13:09. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru