All pastes #64869 Raw Edit

Mine

public text v1 · immutable
#64869 ·published 2006-06-12 17:56 UTC
rendered paste body
#include <stdlib.h>
#include <stdio.h>

#define split_number 8

FILE *outf[split_number*split_number];

void open_files() {
    char names[1024];
    int i;
    for (i=0;i<split_number*split_number;i++) {
        sprintf(names,"23_18_%u.dat",i);
        outf[i]=fopen(names,"wb");
    };
}

void close_files() {
    int i;
    for (i=0;i<split_number*split_number;i++) {
        fclose(outf[i]);
    };
}

void write_out(unsigned int x, unsigned int y, char *buf, int bufp) {
    unsigned int p;
    unsigned int x1,y1;
    x1=x/(256/split_number);
    y1=y/(256/split_number);
    p=x1*split_number+y1;
    fwrite(buf,bufp+2,1,outf[p]);
};

void main () {
    FILE *inf;
    char buf[65535];
    unsigned int buf_pointer;
    union {
        char a[2];
        unsigned short int b_int;
    } bb;
    char *ss1;
    char *ss2;
    unsigned int x,y;
    unsigned short int *b_int;
    int r;
    inf=fopen("23_18_conv.dat","r");
    open_files();

    int j,i;
    fseek(inf,18,SEEK_SET);

    for (x=0;x<256;x++) {
        for (y=0;y<256;y++) {
            buf_pointer=0;
            r=fread(&buf[buf_pointer],2,1,inf);
            bb.a[1]=buf[buf_pointer+1];
            bb.a[0]=buf[buf_pointer];
            if (bb.b_int>2048) {
                printf("error %u\n",bb.b_int);
                exit(1);
            };
            if (bb.b_int==0) {
                buf_pointer+=2;
                r=fread(&buf[buf_pointer],2,1,inf);
                buf_pointer+=2;
                r+fread(&buf[buf_pointer],2,1,inf);
                write_out(x,y,&buf[0],buf_pointer);
            } else if ( bb.b_int == 64) {
                for (i=0;i<64;i++) {
                    buf_pointer+=2;
                    r=fread(&buf[buf_pointer],2,1,inf);
                };
                write_out(x,y,&buf[0],buf_pointer);
            } else {
                for (i=0;i<64;i++) {
                    buf_pointer+=2;
                    r=fread(&buf[buf_pointer],2,1,inf);
                    bb.a[1]=buf[buf_pointer+1];
                    bb.a[0]=buf[buf_pointer];
                    for (j=0;j<bb.b_int;j++) {
                        buf_pointer+=2;
                        r=fread(&buf[buf_pointer],2,1,inf);
                    };
                };
                write_out(x,y,&buf[0],buf_pointer);
            };
        };
    };
    fclose(inf);
    close_files();
}