Here we have the 2nd version, a little bit more "advanced"
Code:
//------------------------------------------------------------------------------------
// addspace2.c
// File input: myfile.txt - 4000 bytes type binary
// File output: myfiles.txt - 8000 bytes type binary
//------------------------------------------------------------------------------------
// Author: frktons @cProgramming forum
// Date: 25 july 2010
//------------------------------------------------------------------------------------
#include <stdio.h>
#include <stdlib.h>
int main(void){
//------------------------------------------------------------------------------------
// Array for storing input data
//------------------------------------------------------------------------------------
char source[4000];
char *ptr_source = source;
char *source_start = ptr_source;
char *source_limit = ptr_source + 3999;
//------------------------------------------------------------------------------------
// Array for preparing output data
//------------------------------------------------------------------------------------
char target[8000];
char *ptr_target = target;
char *target_start = ptr_target;
char *target_limit = ptr_target + 7999;
char a_space = ' ';
FILE *fp_out;
FILE *fp_in;
char *file_name_in = "myfile.txt";
char *file_name_out = "myfiles.txt";
int ret_stat = 0;
//------------------------------------------------------------------------------------
// Array for output gets initialized with a_space
//------------------------------------------------------------------------------------
for (ptr_target = target_start; ptr_target <= target_limit; ptr_target++)
*ptr_target = a_space;
printf(" Reading file %s\n",file_name_in);
printf(" Creating file %s\n",file_name_out);
fp_in = fopen(file_name_in, "rb");
if (fp_in == NULL) {
perror("\n Error opening input file");
exit(EXIT_FAILURE);
}
ret_stat = fread(source,1,4000,fp_in);
if (ret_stat != 4000) {
perror("\n Error reading input file");
exit(EXIT_FAILURE);
}
ret_stat = fclose(fp_in);
if (ret_stat != 0) {
perror("\n Error closing input file");
exit(EXIT_FAILURE);
}
//------------------------------------------------------------------------------------
// Array for output gets data from input array
//------------------------------------------------------------------------------------
for (ptr_target = target; ptr_target < target_limit; ptr_target +=2, ptr_source++)
*ptr_target = *ptr_source;
fp_out = fopen(file_name_out, "wb");
if (fp_out == NULL) {
perror("\n Error opening output file");
exit(EXIT_FAILURE);
}
ret_stat = fwrite(target,1,8000,fp_out);
if (ret_stat != 8000) {
perror("\n Error writing output file");
exit(EXIT_FAILURE);
}
ret_stat = fclose(fp_out);
if (ret_stat != 0) {
perror("\n Error closing output file");
exit(EXIT_FAILURE);
}
printf("\n File %s created successfully\n",file_name_out);
getchar();
return 0;
}
If you want to give it a try, use the file I posted in this thread and put
executable and file in the same folder.
Working on the real stuff, this was just to try some instructions.
Enjoy.