001
06.12.2005, 08:11 Uhr
Sponge
|
Moin, naja wenn das Feld nicht gefüllt ist, hast du es ja trotzdem nicht initialisiert, d.h. es wird ja der Speicher nur allokiert und nicht mit einem bestimmten Wert besetzt. Du könntest zum Anfang einfach alle Felder durchlaufen und mit einem festen Wert besetzen (z.B. 0) oder du legt dir beim initieren ein Pointer ein und dann weisst du mittels calloc dem Pointer einen Speicherbereich zu. Calloc bewirkt dabei, dass dein Speicher mit 0-len initialiesiert wird.
C++: |
Monitor init_Monitor(){ Monitor * KSystem;
KSystem = (Monitor*)calloc(1,sizeof(Monitor); //initialisiert den Speicher mit 0
int i, buffer; for(i=3;i<78;i++){ KSystem.monitorfeld[22][i]='-'; if((i-3)<10){ KSystem.monitorfeld[23][i]='0'; KSystem.monitorfeld[24][i]=i-3; }else{ buffer=i%10; KSystem.monitorfeld[23][i]=i-buffer; KSystem.monitorfeld[24][i]=buffer; } }
return KSystem; }
|
damit kannst du dann abfragen ob das Array gefüllt ist, indem du auf 0 auffragst
alternativ kannst du auch mit memset arbeiten
C++: |
Monitor init_Monitor(){ Monitor KSystem; memset(&KSystem,0,sizeof(Monitor)); //initialisiert den Speicher mit 0 int i, buffer; for(i=3;i<78;i++){ KSystem.monitorfeld[22][i]='-'; if((i-3)<10){ KSystem.monitorfeld[23][i]='0'; KSystem.monitorfeld[24][i]=i-3; }else{ buffer=i%10; KSystem.monitorfeld[23][i]=i-buffer; KSystem.monitorfeld[24][i]=buffer; } }
return KSystem; }
|
und was meinst du mit komischen Zeichen ? also die Zeilen
C++: |
if((i-3)<10){ KSystem.monitorfeld[23][i]='0'; KSystem.monitorfeld[24][i]=i-3; }
|
bewirken ja, dass die [24] mit Steuerzeichen befüllt wird, die nicht wirklich druckbar sind. -- Es gibt 10 Arten von Leuten: die, die das binäre System verstanden haben, und die, die es nicht verstanden haben ^^ |