015
14.12.2007, 22:54 Uhr
Hans
Library Walker (Operator)
|
Hier jetzt mal ein Beispiel: Das Programm füllt ein 10 mal 10 Array mit Zufallszahlen und gibt sie aus. Beim erzeugen auch auf die Mattscheibe. Danach werden die erzeugten Zahlen in eine Datei geschrieben, und zwar 2 mal. Beim ersten mal so, wie sie auch auf dem Bildschirm erscheinen, beim zweiten mal so, wie sie im Rechner intern vorliegen. Um diese Form der Ausgabe richtig betrachten zu können ist ein Hexeditor notwendig. Aber hier erst mal das Programm:
C++: |
#include <stdio.h> #include <stdlib.h> #include <time.h>
int Random(int min, int max);
int main (void) { int i, j; int array[10][10]; FILE *datei;
srand((unsigned)time(NULL)); /* Zufallsgenerator initialisieren */ for (j=0; j<10; j++) /* array mit Zahlen füllen */ { for (i=0; i<10; i++) { array[j][i] = Random (1, 26); printf ("%2d, ", array[j][i]); /* und ausgeben */ } printf ("\n"); }
datei = fopen ("zahlen.txt", "w"); /* Datei öffnen */ if (datei==NULL) { perror("Fehler beim öffnen der Datei "); exit(1); } /* Jetzt werden die eben erzeugten Zahlen in die Datei geschrieben. Man beachte, das zur Ausgabe die Funktion fprintf() verwendet wird. */ for (j=0; j<10; j++) { for (i=0; i<10; i++) { fprintf (datei, "%2d, ", array[j][i]); } fprintf (datei, "\n"); }
/* Trennlinie in die Datei schreiben */ fprintf (datei, "----------------------------------------\n");
/* Jetzt werden die erzeugten Zahlen in die Datei geschrieben; - Aber so, wie sie auch Rechnerintern vorliegen, d.h. die Umwandlung nach ASCII, die fprintf() vornimmt, findet jetzt nicht statt. */ for (j=0; j<10; j++) { for (i=0; i<10; i++) { fwrite(&(array[j][i]), sizeof(int), 1, datei); /* */ fprintf (datei, ","); /* Komma als Orientierungsmarke */ } fprintf (datei, "\n"); }
fclose (datei);
return 0; }
/* Funktion zum erzeugen der Zufallszahlen in einem bestimmten Intervall. Es ist die Gleiche, die xXx im Posting 008 geschrieben hat, nur auf umgetauft und mehrere Zeilen auseinander gezogen. */ int Random(int min, int max) { int z; z = min + (int)((max - min + 1) * rand() / (RAND_MAX + 1.0)); return z; }
|
Wenn man die von dem Programm erzeugte Datei "Zahlen.txt" im Windoof-Editor betrachtet, sieht das etwa so aus:
Code: |
7, 17, 9, 22, 21, 9, 9, 22, 14, 2, 18, 9, 9, 2, 14, 20, 23, 4, 21, 23, 1, 14, 3, 5, 4, 15, 23, 7, 6, 14, 3, 19, 17, 20, 1, 7, 5, 16, 20, 10, 8, 8, 20, 16, 18, 14, 21, 12, 23, 16, 9, 2, 8, 25, 14, 18, 8, 17, 15, 10, 8, 9, 15, 10, 1, 25, 12, 24, 2, 23, 1, 24, 24, 9, 3, 18, 14, 14, 14, 4, 14, 14, 17, 7, 16, 5, 23, 24, 12, 22, 13, 6, 23, 3, 25, 26, 19, 2, 12, 25, ---------------------------------------- ,, ,,, , ,,,, , , ,,,,,,,, ,,,,,,,,,, ,,,,,,,,, , ,,,,,,,,,, ,,,,,,,,, , , ,, ,,,,,,, ,,, ,,,,,,, ,,,,,,,,,,
,,,,,,,,,,
|
Soweit erst mal das. Wie der zweite Teil, also unter der Linie als Hexdump (so nennt man die Ausgaben von Hexeditoren auch) aussieht, folgt später noch, sofern Bedarf besteht.
Hans -- Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung. Dieser Post wurde am 14.12.2007 um 22:59 Uhr von Hans editiert. |