PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Anfängerfrage bzgl. Output



datomato
08-12-2005, 13:24
Hallo,

ich will endlich das Programmieren in C/C++ erlernen, leider stehe ich noch ganz am Anfang und habe ein paar Fragen, die sich beim rumspielen ergeben haben.

Ich würde gerne von einer zuvor eingelesen Datei, alle Zeichen einzeln ausgeben, aber irgendwie scheint es als würde immer eine Zeile zuerst gebuffert bevor sie ausgegeben wird.
Mir fehlt zudem eine Methode die Ausgabe ein wenig zu verzögern oder kann man das mit ner Schleife machen?




while((getc(input))!=EOF){
cha.push_back(fgetc(input)); // one char per element
}

for(int j=0;j<=cha.size();j++){
printf("%c",cha[j]); //WARUM WIRD DAS NICHT EINZELN AUSGEGEBEN UND VERZÖGERT?
for(int i=0; i<100000; i++); // delay output
}



Dann würde ich noch gerne wissen ob und wie es möglich ist die ganzen Zeichen wieder rückwärts laufen zu lassen, sprich zu löschen. Muss man das mit nem mehrdemensionalen Array machen indem die Zeichen und Zeilen gespeichert sind und dann mit '\r' und Schleifen?

Wäre nett wenn mir wer auf die Sprünge helfen könnte,

DANKE

RHBaum
08-12-2005, 14:01
Zum verzoegern gibt es sleep (unter windows wird sowas grossgeschrieben ^^, unter Linux klein )

Streams (iostream unter C++, File * unter C) sind dafuer design, Datenstroeme zu verarbeiten, die sind damit fast immer gepuffert (da kann man aber drauf zugreifen) und fuer sequentielle aufgaben (hintereinander weg, aber nicht mittendrin umdrehen) designt . Dafuer funktionieren die auch dann, wein deine datei groesser ist als dein Speicher jmals fassen koennt. Wenn dein Programm dann trotzdem explodiert, dafuer bist selbst verantwortlich ^^

es gibt aber auch die datei locatoren (tellg etc) die sind aber mega ineffizient bei solchen operationen ....

Bist sicher dass deine datei in den speicher passt, allociere den speicher und streame alles da rein ... Dann kannst da wahlweise drauf zugreifen ...

Ne schnelle elegante aber plattformabhaengige moeglichkeit ist auch ne Datei komplett in den Speicher mappen ....

Ciao ...

anda_skoa
08-12-2005, 14:45
Hmm

getc gefolgt von fgetc, überspringt das nicht immer ein Zeichen?

Btw, wenn du nur zum Testen eine möglichst unbepufferte Ausgabe willst, versuch auf stderr statt stdout zu schreiben, also fprintf(stderr, ...) statt printf(...)

Ciao,
_