B
So, noch ein bisschen schöner und besser (vorher stimmten die Reihenfolge der 32 char blocks nicht überrein, bis ich das gemerkt habe )
# include < stdlib.h >
# include < stdio.h >
void main()
{
int i;
char line[45];
char final_line[33];
char double_line[64];
FILE *filePointer_wr;
FILE *filePointer_rd;
filePointer_wr = fopen("data.vhd", "w");
filePointer_rd = fopen("data.hex", "r");
fgets(line, 45,filePointer_rd); //ignore first line
for (i=1; i<33; i++) {
fgets(line,45 ,filePointer_rd); //Read Line
strncpy(&final_line[0],&line[37],4);
strncpy(&final_line[4],&line[33],4);
strncpy(&final_line[8],&line[29],4);
strncpy(&final_line[12],&line[25],4);
strncpy(&final_line[16],&line[21],4);
strncpy(&final_line[20],&line[17],4);
strncpy(&final_line[24],&line[13],4);
strncpy(&final_line[28],&line[9],4);
if (i % 2) {
strncpy(&double_line[32],final_line,32); //Add first Line
}
else if (i == 32) {
strncpy(&double_line[0],final_line,32); //Add second Line
fprintf (filePointer_wr, "X\"%-64.64s\"\n",double_line); //Last line (without ,)
}
else {
strncpy(&double_line[0],final_line,32); //Add second Line
fprintf (filePointer_wr, "X\"%-64.64s\",\n",double_line); //Write line of 64char (32 bytes)
}
}
fclose(filePointer_wr);
fclose(filePointer_rd);
}