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

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

Восстановить пароль Регистрация
 
bond95
Мы все БОЛЬШАЯ программа
 Аватар для bond95
51 / 51 / 2
Регистрация: 16.04.2009
Сообщений: 489
13.10.2011, 00:13     Считывание с двоичного файла #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++
C++ Запись двоичного файла
C++ Считывание из двоичного файла

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

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

Текущее время: 14:01. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru