Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- int main(int argz, char** argv) {
- FILE *eingang, *ausgang;
- int format, N, M, i, j;
- if(argz != 6 || (strcmp(argv[3], "d") && strcmp(argv[3], "f"))) {
- fprintf(stderr, "Verbrauch: %s eingang.dat ausgang.dat [d|f] N M\n", argv[0]);
- fprintf(stderr, " Der Eingang sollte im binären Format vorliegen.\n");
- fprintf(stderr, " Letzte Argument gibt Format: 'd' für double, und 'f' für float.\n");
- fprintf(stderr, " N und M sind Dimensionen eines Arrays.\n");
- return 1;
- }
- if((eingang = fopen(argv[1], "r")) == NULL) {
- fprintf(stderr, "Kann Eingabedatei nicht öffnen.\n");
- goto ausfahrt;
- }
- if((ausgang = fopen(argv[2], "w")) == NULL) {
- fprintf(stderr, "Kann nicht geöffnet werden Ausgabedatei.\n");
- goto schliessen_eingang;
- }
- format = strcmp(argv[3], "d"); /* 0 ist double, 1 ist float */
- N = atoi(argv[4]), M = atoi(argv[5]);
- if(format == 0) {
- double* datum = (double*) malloc(sizeof(double) * M * N);
- fread(datum, sizeof(double), M * N, eingang);
- for(i = 0; i < M; i++) {
- for(j = 0; j < N; j++) {
- fprintf(ausgang, "%f", datum[j + i * N]);
- fprintf(ausgang, (j == N - 1) ? "\n" : "\t");
- }
- }
- } else {
- float* datum = (float*) malloc(sizeof(float) * M * N);
- fread(datum, sizeof(float), M * N, eingang);
- for(i = 0; i < M; i++) {
- for(j = 0; j < N; j++) {
- /*
- * Ein float Argument für eine Funktion wie variadische
- * fprintf wird automatisch befördert double.
- */
- fprintf(ausgang, "%f", datum[j + i * N]);
- fprintf(ausgang, (j == N - 1) ? "\n" : "\t");
- }
- }
- }
- fclose(ausgang);
- schliessen_eingang:
- fclose(eingang);
- ausfahrt:
- return 0;
- }
Add Comment
Please, Sign In to add comment