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

Чтени из двоичного файла - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Файлы Visual Studio 2008 http://www.cyberforum.ru/cpp-beginners/thread152771.html
Трабл серьезный, абсолютно все программы(С\С++) которые работают с файлами перестали работать внутри среды , то есть вот есть рабочий код если его запустить в режиме отладки ничего не работает, если запустить без отладки так же ничего, НО! если открыть папку проекта и запустить exe'шник вне IDE то вcе отлично работает. Может будут хоть какие нибудь предположения что делать.... MS Visual Studio...
C++ дескриптор элемента управления Как мне например узнать дескриптор кнопки в программе??? http://www.cyberforum.ru/cpp-beginners/thread152763.html
C++ Узнать скорость соеденения и определить NAT
здраствуйте... нужно создать программу на Visual C++ или чистом С.... консольная программа для теста скорости интернета(возможно через 2ip.ru или internet.yandex.ru)... ёщо нужно определить есть ли NAT(по ип)....... подскажыте как ето реализовать.....возможно есть библиотеки для работы с етим....
Получить символы между двоеточиями C++
даны натуральное число n и символы s1(1 стоит под s как s ное)..., sn,среди которых есть двоеточие.получить все символы,расположенные между первым и вторым двоеточием.если второго двоеточия нет,то получить все символы,расположенные после единственного имеющегося двоеточия.
C++ Работа с файлами: получить заданную строку http://www.cyberforum.ru/cpp-beginners/thread152740.html
Даны текстовый файл, строка s. Получить все строки файла f, содержащие в качестве фрагмента строку s. Не надо злоупотреблять Caps Lock! Уважай окружающих и, возможно, к тебе отнесутся также.
C++ Структуры данных в С++ Последнее время стал с тыкаться с такими заданиями как связанные со стеками, очередями, списками и т.д., в общем со структурами данных. Но пока что я сними не очень хорошо ориентируюсь и хотелось попросить вас помочь найти теорию, алгоритмы и примеры реализации их на С++ да и вообще в ООП. Хочу понять саму суть структуры данных и как это все реализовать. Просьба посоветовать что можно почитать на... подробнее

Показать сообщение отдельно
IMD
2 / 2 / 0
Регистрация: 17.06.2010
Сообщений: 38
12.07.2010, 23:38  [ТС]     Чтени из двоичного файла
И ещё последний вопросик:
Вот я додлелал программы, теперь первая создает двоичный файл с несколькими массивами, а вторая читает массивы с номерами из заданного диапазона. И вот почему-то когда она их читает, появляется совершенно лишний файл, пустой и с непонятным названием. Вот сами смотрите.
Эта программа формирует файл с массивами:
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
#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <locale.h>
 
 
 
int main(void)
{
        setlocale(LC_ALL,"Rus");
        char name[20];
        int number, rows, columns, **massiv, n, i, j;
 
        FILE *file;
        
        printf("Введите число массивов: ");
        scanf("%d", &number);
        printf("Введите число строк: ");
        scanf("%d", &rows);
        printf("Введите число столбцов: ");
        scanf("%d%*c", &columns);
        printf("\nВведите имя файла: ");
        scanf("%s", name);
       
        
        
        srand(time(NULL));
        if ( ( massiv = (int**)calloc(rows, sizeof(int*)) ) == NULL )
        { 
            fprintf(stderr, "Memory error!\n");       
        }
        if ( ( file=fopen (name, "wb") ) == NULL )
        {
            fprintf(stderr, "Can't open file %s for input!\n", name);                
        }
        
 
        for (n=1;n<=number;n++)
        {
            printf("Массив №%d",n);
            printf("\n");
            fwrite (&n, sizeof(int), 1, file);
            for ( i = 0; i < rows; i++ )
                {
                    if ( ( massiv[i] = (int*)calloc(columns, sizeof(int)) ) == NULL )
                    {
                        fprintf(stderr, "Memory error!\n");
                        
                    }
                        for ( j = 0; j < columns; j++ )
                        printf("%02d ", ( massiv[i][j] = rand() % 100 ));
                        printf("\n");
                        
                }
                
                
                if ( fwrite(&rows, sizeof(int), 1, file) != 1 )
                {
                    fprintf(stderr, "Can't write to output file!\n");                
                }
                if ( fwrite(&columns, sizeof(int), 1, file) != 1 )
                {
                    fprintf(stderr, "Can't write to output file!\n");
                }
                    for ( i = 0; i < rows; i++ )
                    {
                        if ( fwrite(massiv[i], sizeof(int), columns, file) != columns )
                        {
                                fprintf(stderr, "Can't write to output file!\n");                       
                        }
                }        
            printf("Массив записан.\n");
        }
 
 
        fclose (file);
        scanf("%s", name);
}
А эта переписывает нужные массивы в другие файлы:
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
#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
 
 
int main(void)
{
        setlocale(LC_ALL,"Rus");
        FILE * fin, * fout;
        char fin_name[20], fout_name[20];
        int i, j, * arr, rows, columns, n;
        int n1, n2;
        
        printf("Введите имя читаемого файла: ");
        scanf("%s", fin_name);
        printf("Введите номер первого массива: ");
        scanf("%d", &n1);
        printf("Введите номер последнего массива: ");
        scanf("%d", &n2);
        
              
        if ( ( fin = fopen(fin_name, "rb") ) == NULL )
        {
                fprintf(stderr, "Can't open file %s for input!\n", fin_name);                
        }
        if ( ( fout = fopen(fout_name, "wt") ) == NULL ){
                fprintf(stderr, "Can't open file %s for output!\n", fout_name);              
        }
 
                for (n=1;n<=n2;n++)
                {
                    if ( fread(&n, sizeof(int), 1, fin) != 1 )
                    {
                            fprintf(stderr, "Can't read from input file!\n");                
                    }
                    if ( fread(&rows, sizeof(int), 1, fin) != 1 )
                    {
                            fprintf(stderr, "Can't read from input file!\n");                
                    }
                    if ( fread(&columns, sizeof(int), 1, fin) != 1 )
                    {
                            fprintf(stderr, "Can't read from input file!\n");                
                    }
                            
 
                    if ( ( arr = (int*)calloc(columns, sizeof(int)) ) == NULL )
                    {
                            fprintf(stderr, "Memory error!\n");                
                    }
                    if (n<n1)
                    {
                        fseek(fin, rows * columns * sizeof(int), SEEK_CUR);
                    }
                    else
                    {
                    printf("Введите имя записываемого файла: ");
                    scanf("%s", fout_name);
                    fout = fopen(fout_name, "wt");                      
                
                        for ( i = 0; i < rows; i++)
                        {
                                
                                if ( fread(arr, sizeof(int), columns, fin) != columns)
                                {
                                        fprintf(stderr, "Unexpected end of file!\n");
                                      
                                }
                                for ( j = 0; j < columns; j++ )
                                {
                                        
                                        if ( fprintf(fout, "%02d%c", arr[j], ( j < columns - 1 ) ? ' ' : '\n') < 0 )
                                        {
                                                fprintf(stderr, "Can't write to output file!\n");                                
                                        }
                                }
                        }
                    }
                }
fclose(fin);
fclose(fout);
printf("done.\n");
scanf("%s", fout_name);
}
 
Текущее время: 19:32. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru