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

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

Войти
Регистрация
Восстановить пароль
 
bond95
Мы все БОЛЬШАЯ программа
51 / 51 / 2
Регистрация: 16.04.2009
Сообщений: 489
#1

Считывание с двоичного файла - C++

13.10.2011, 00:13. Просмотров 420. Ответов 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
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
int main() {
    FILE *fp;
    int i,b,f;
    char buff[1024*16];
    char buffer2[6];
    char temp[5];
    int count=0;
    int size=0;
    int nums=0;
    int sumsize=0;
    if((fp=fopen("some2.cont","r"))==NULL) {
    puts("Sorry, I can't find this file.");
    exit(1);
    }
    fseek(fp,0,SEEK_END);
    size=ftell(fp);
    fseek(fp,0,SEEK_SET);
    size=0;
    fgets(buffer2,5,fp);
    for(int i=0; i<5; i++)
    if(isdigit(buffer2[i]))
    {
        size=i;
        temp[i]=buffer2[i];
    }
    else
    break;
    sumsize=size+2;
    nums=atoi(temp);
    for(int i=0; i<5; i++)
    temp[i]='\0';
    for(int i=0; i<nums; i++) {
        count=0;
        size=0;
        for(int j=0; j<5; j++)
    temp[j]='\0';
    fseek(fp,sumsize,SEEK_SET);
       fgets(buffer2,6,fp);
      for(int j=0; j<6; j++)
    if(isdigit(buffer2[j]))
    {
        size=j;
        temp[j]=buffer2[j];
    }
    else
    break;
    sumsize+=size-1;
    fseek(fp,sumsize,SEEK_SET);
    count=atoi(temp);
    sumsize+=count;
        FILE *fp2;
        char filename[5];
        sprintf(filename,"%d.bmp",i);
    fp2=fopen(filename,"w");
    int towrite=0;
    int sizebuff=count;
    while(sizebuff>0) {
        towrite=1024*16;
        if(towrite>sizebuff) towrite=sizebuff;
        fread(buff,towrite,1,fp);
        fwrite(buff,towrite,1,fp2);
        sizebuff-=towrite;
    }
    fclose(fp2);
    }
    fclose(fp);
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.10.2011, 00:13
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Считывание с двоичного файла (C++):

Считывание из двоичного файла - C++
Ребята, помогите пожалуйста! Из двоичного файла нужно считать числа, отвечающие определённым условиям, например, только положительные. Их...

Преобразование текстового файла в двоичный и чтение исходных данных из двоичного файла. - C++
#include&lt;iostream&gt; #include&lt;fstream&gt; #include&lt;locale.h&gt; #include&lt;iomanip&gt; #include &lt;cstdlib&gt; using namespace std; struct...

В начало двоичного файла целого типа дописать нечетные элементы этого файла. - C++
Вот прога для записи четных файлов...в конец Мне нужно в начало....нечетные...помогите разобраться как сделать!!!:drink: #include...

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

Создание двоичного файла на С++ - C++
Здравствуйте. Помогите в решении проблемы. На С++. Создать и заполнить двоичный файл. Слова в двоичном файле хранятся в массивах ...

Чтение двоичного файла - C++
Есть файл, без типа,просто файл. Содержит набор чисел (размером по 4 б - int ) нужно его прочитать. Пишу: FILE *fp; if ((fp =...

1
accept
4823 / 3244 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
13.10.2011, 09:54 #2
ftell() не подходит для вычисления размера файла
для текстовых потоков она просто возвращает число, пригодное для fseek() с SEEK_SET
для двоичных потоков нельзя вызывать fseek() с SEEK_END, поэтому ftell() вызывать не для чего

Цитата Сообщение от bond95
C++
1
2
3
4
    fseek(fp,0,SEEK_END);
    size=ftell(fp);
    fseek(fp,0,SEEK_SET);
    size=0;
так что вот этот кусок для определения размера не имеет смысла
даже если его записать без ошибок

Цитата Сообщение от bond95
Записал с помощью программы (своей) в один файл два изображения
теперь надо открывать файл в режиме "rb" и читать через fread()
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.10.2011, 09:54
Привет! Вот еще темы с ответами:

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

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

Использование двоичного файла - C++
Подскажите, пожалуйста, что такое двоичные файлы, и с чем их едят?) и как с помощью их можно реализовать хранение данных? а то я в...

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


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

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

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