Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » Problem mit char Array

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
05.12.2005, 22:44 Uhr
~booorgy
Gast


Hallo,

Habe ein char Array:

Code:
#define XGR 25
#define YGR 78
typedef struct{
char monitorfeld[YGR][XGR];    
}Monitor;


Code zum füllen des Arrays:

Code:

Monitor init_Monitor(){
Monitor KSystem;
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;
}



Folgendes Problem:
- das Füllen des Array klappt nicht, da die Werte nicht von char sind. (char)Variable oder Wert geht auch nicht.
- Bei der Ausgabe bekomme ich nur komische zeichen wenn ich das array so fülle.
- Auch bei der Ausgabe der Felder die nicht gefüllt sind bekomme ich komische zeichen, wie frage ich ob das feld gefüllt ist?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
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 ^^
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: