#include #include #include FILE *fptr0, *fptr1, *fptr2; int fd1, fd2; char fname0[30]; char fname1[30]; char fname2[30]; size_t dataCount, holeCount; int byte; int i, j, k, count; int buffer[260000]; int dataBuffer[130000]; int holeBuffer[130000]; int main(void) { printf("Starting main()\n"); strcpy(fname0, "test.xfr"); printf("First file name set\n"); strcpy(fname1, "data.xfr"); strcpy(fname2, "hole.xfr"); if(( fptr0 = fopen(fname0, "rb") ) == NULL) { printf("Unable to open transmit file %s\n", fname0); exit(0); } else { printf("Input data file %s open\n", fname0); } if(( fptr1 = fopen(fname1, "wb") ) == NULL) { printf("Unable to open first output file %s\n", fname1); exit(0); } else { printf("First output data file %s open\n", fname1); } if( ( fptr2 = fopen(fname2, "wb")) == NULL) { printf("Unable to open second output file %s\n", fname2); exit(0); } else { printf("Second output data file %s open\n", fname2); } printf("\n\n"); // read entire file into a buffer i = 0; while ((byte = fgetc(fptr0)) != EOF) buffer[i++] = byte; // split into two buffers count = i + 1; i = 0; for (k = 0; k < count; k+=2 ) { dataBuffer[i++] = buffer[k]; } printf("Data Buffer has %d bytes\n", i); j = 0; for (k = 1; k < count; k+=2 ) { holeBuffer[j++] = buffer[k]; } printf("Hole Buffer has %d bytes\n", j); // output two files printf("\n"); // dataCount = write( fd1, dataBuffer, i); // holeCount = write( fd2, holeBuffer, j); for (k = 0; k < i; k++) fputc(dataBuffer[k], fptr1); for (k = 0; k < j; k++) fputc(holeBuffer[k], fptr2); printf("dataCount = %d, holeCount = %d\n", (int)dataCount, (int)holeCount); fclose(fptr0); close(fd1); close(fd2); }