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

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

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

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

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

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

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

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

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

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

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

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

Создание и обработка двоичного файла - C++
Задание: Создать файл с информацией о клиентах банка: ФИО, номер счета, принято вклад, выдано вклад, остаток,дата проведения операции....

Создание файла из двоичного кода - C++
Здравствуйте, у меня есть переменная типа std::string В ней хранится двоичной код, как мне создать файл (.txt), и записать в него этот...

Кодирование и декодирование двоичного файла - C++
Кодирование и декодирование двоичного файла путем сложения каждого байта по модулю два с заданным пользователем числом. Если можно код! ...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
accept
4821 / 3241 / 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()
Ответ Создать тему
Опции темы

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