Hallo Zusammen,
ich habe mir ein kleines Programm geschrieben um Messdaten aus einer
Binärdatei in Float umzurechnen. Ich gebe zu ich bin kein erfahrener
Programmierer bin aber doch stloz es soweit zum laufen bekommen zu
haben. Verbesserungsvorschläge nehme ich trotzdem dankbar an.
1 | #include<stdio.h>
|
2 | #include<stdlib.h>
|
3 |
|
4 | int main(int n, char *params[])
|
5 | {
|
6 | if (!(n==3))
|
7 | { printf("ERROR. Usage ./bin2float input_file output_file\n");
|
8 | }
|
9 | else
|
10 | {
|
11 | FILE *fi = fopen(params[1],"rb+");
|
12 | FILE *fo = fopen(params[2],"w");
|
13 | if(!fi) printf("not opened");
|
14 | if(!fo) printf("not opened");
|
15 |
|
16 | unsigned char b[2084];
|
17 | unsigned char a[2084];
|
18 | fread(b,4,521,fi);
|
19 | int i;
|
20 | int j;
|
21 | for (j=0; j<=2084;j=j+4)
|
22 | {
|
23 | for (i = 0; i < 4; i++) {
|
24 | a[i+j] = b[3-i+j];
|
25 | }
|
26 | }
|
27 | int k;
|
28 | float *y = (float *)a;
|
29 |
|
30 | for (k=0; k<521; k++){
|
31 |
|
32 | fprintf(fo, "%e\n",y[k]);
|
33 | }
|
34 |
|
35 | fclose(fi);
|
36 | fclose(fo);
|
37 |
|
38 | return 0;
|
39 |
|
40 | }
|
41 | }
|
Das ganze funktioniert solange ich vorher den Header der Datei von Hand
wegmache. Der header ist nämlich in Klartext also ist das recht einfach.
Nun habe ich eine Menge Dateien und wie ihr sehen könnt sind eine
Parameter wie die Länge der Datei einfach von Hand ausgerechnet ins
Programm geschrieben worden. Diese Informationen kann ich ganz einfach
aus dem Header lesen. Jetzt würde ich das ganze natürlich gerne auch
automatisieren, Ok nun endlich meine Fragen. Wie kann ich den Header
getrennt einlesen? Wie ist es möglich den Klartextteil für die Binär
Umrechnung zu ignorieren, zumal der immer unterschiedlich lang ist?