Multitasking? und file ein+ausgabe

Hallo zusammen

folgendes:
1.Ich hab ein ,sagen wir Jump n Run und ich möchte Tastatureingaben entgegennehmen und gleichzeitig aber meine anderen berechnung fortführen. Bis jetzt weiss ich nicht wie man das verwirklichen kann. Also ich wüsste nicht mal wie man das machen kann das zb nebenher ein „Timer läuft“ der einfach eine Variable inkrementiert während ich auf die Eingabe warte. Ist das möglich und wenn ja wie??
2.Kann mir mal jemand BITTE sagen wie man ANSTÄNDIG aus einem File aus- und einliest? Ich mein mit was für Funktionen macht ihr das denn?

Danke für Antworten
Merlin

1.Ich hab ein ,sagen wir Jump n Run und ich möchte
Tastatureingaben entgegennehmen und gleichzeitig aber meine
anderen berechnung fortführen. Bis jetzt weiss ich nicht wie
man das verwirklichen kann. Also ich wüsste nicht mal wie man
das machen kann das zb nebenher ein „Timer läuft“ der einfach
eine Variable inkrementiert während ich auf die Eingabe warte.
Ist das möglich und wenn ja wie??

Timer oder multithreading würde ich im ersten Schritt aussen vor lassen.
Damit verlagserst du das eigentliche Problem, das lautet nämlich:
wie schaffst du es unmittelbar auf einen Tastdruck zu reagieren, d.h. wie
muss die Struktur deines Programmes aussehen, damit du jederzeit Einfluss
auf die Spielfigur nehmen kannst.
Dein Hauptprogramm muss hierzu wie folgt aussehen:

while( !beenden )
{
if ( key_event )
spiel_loop( key );
else
spiel_loop( kein_event );
}

Deine Hauptroutine ist demnach eine nicht blockierende Funktion, die so schnell sein sollte, dass in einer Sekunde mehrere Tastaturabfragen möglich sind.
Mit Timern wirst du keine andere Lösung finden, eher mit Threads. Da sparst du dir die Mühe, deine spiel_loop() nicht blockierend zu machen, handelst dir dafür einer eine Menge Synchronization ein. Fehlersuche ist da sehr auswendig, deshalb rate ich erst einmal von Threads ab.

2.Kann mir mal jemand BITTE sagen wie man ANSTÄNDIG aus einem
File aus- und einliest? Ich mein mit was für Funktionen macht
ihr das denn?

In C++ kannst du mit fstreams auf Dateien zugreifen, in ANSI C sind fprintf/fscanf das pendant.
Was versteht du unter anständig? Und was für Daten möchtest du aus einem
File auslesen? Man unterscheidet zwischen binär- und Textdateien, beide
können Formate verwenden, die Einfluss auf das Auslesen haben.
Kannst du deine Frage präzisieren?

Gruß Markus

In C++ kannst du mit fstreams auf Dateien zugreifen, in ANSI C
sind fprintf/fscanf das pendant.
Was versteht du unter anständig? Und was für Daten möchtest du
aus einem
File auslesen? Man unterscheidet zwischen binär- und
Textdateien, beide
können Formate verwenden, die Einfluss auf das Auslesen haben.
Kannst du deine Frage präzisieren?

Gruß Markus

Hi Markus

Danke ersma für die Antworten

Also ich möchte aus Textdateien(.txt) auslesen und auch in diese Text eingeben (d.h der Benutzer gibt Hallo ein und ich möchte das das nachher so im File steht und wenn er h a l l o eingibt möchte ich das es so im File steht)
Und das anständig hab ich geschrieben weil ich bis jeds nur mit getline oder sowas ausgelesen habe.
Ich möchte auch ab einer bestimmten Postition ein und auslesen.
Das ganze in C++ wenns geht.

Bis dann
Merlin

Also ich möchte aus Textdateien(.txt) auslesen und auch in
diese Text eingeben (d.h der Benutzer gibt Hallo ein und ich
möchte das das nachher so im File steht und wenn er h a l l o
eingibt möchte ich das es so im File steht)
Und das anständig hab ich geschrieben weil ich bis jeds nur
mit getline oder sowas ausgelesen habe.
Ich möchte auch ab einer bestimmten Postition ein und
auslesen.
Das ganze in C++ wenns geht.

Bis dann
Merlin

In C++ kannst du fstreams für den Dateizugriff verwenden. Aber auch
hier existiert die Problematik, dass du einen geschrieben String u.U.
nicht mehr 1 zu 1 mit der Umkehroperation auslesen kannst. Schreibst
du „H A L L O“ in eine Datei und forderst den Stream per >> auf einen String
zu lesen, wird er dir nur „H“ liefern. Leerzeichen/Whitespaces gelten als
Delimiter.
Du benötigst grundsätzlich einen Delimiter, um das Ende der Eingabe zu erkennen.
Bei scanf() hast du sicherlich auch schon diese Erfahrung gemacht. Bei Tastatur-Eingaben verwendest man bei Kommandozeilen-Interpretern das CR-LF um ein vollständiges Kommando auszuführen. Unter C++ gibt es getline() für string/streams entsprechend überladen. Hier kannst du einen eigenen Delimeter definieren, beispielsweise . , / oder was du sonst noch möchtest.
Anders kann C++ nicht wissen, wieviele Zeichen es einlesen soll!

Gruß Markus

Hi Markus

Schreibst du „H A L L O“ in eine Datei und forderst den Stream per
>> auf einen String zu lesen…

Könntest du mir dafür bitte ein Beispiel-Programmausschnitt schreiben?

Kann ich C und C++ „mischen“ und wenn ja wie geht das dann mit der eigenen-Delimiter-Definition?

Danke
Merlin

Hi Markus

Schreibst du „H A L L O“ in eine Datei und forderst den Stream per
>> auf einen String zu lesen…

Könntest du mir dafür bitte ein Beispiel-Programmausschnitt
schreiben?

Kann ich C und C++ „mischen“ und wenn ja wie geht das dann mit
der eigenen-Delimiter-Definition?

#include
#include
#include
#include

int main(int argc, char\* argv[])
{
 // inhalt der Datei
 std::string sample =
 "zeile1: H A L L O\n"
 "zeile2: dieses ist ein kleiner Test!\n"
 "zeile3: es folgt die dritte Zeile";
 // stellvertretend für die Datei
 std::istringstream iss( sample);
 // als i...streams sind verwand mit istream
 // =\> ifstream, istringstream

 // ab hier geht es los
 std::istream& input = iss;
 std::string text;
 do {
 // hier wird bis zum Delimiter \n eingelesen
 std::getline(input, text, '\n');
 if ( input.good() )
 std::cout " " 

AUSGABE AUF DER CONSOLE: 
--\>zeile1: H A L L Ozeile2: dieses ist ein kleiner Test!zil1: H A L L O
zil2: diss ist in klinr Tst!
zil3: s folgt di dritt Zil

Danke schön!

Eine Frage noch

-) wie mach ich das, dass statt aus der std aus einer Datei gelesen wird, sagen wir mal „test.txt“ ?

Gruß Merlin

Eine Frage noch

-) wie mach ich das, dass statt aus der std aus einer Datei gelesen wird, sagen wir mal „test.txt“ ?

#include

std::ifstream meine_datei( „c:\test.txt“ );
if ( !meine_datei )
//fehler

Gruß Markus