Gibt es eine Möglichkeit, die Eingabe und Ausgabe in die gleiche Datei umzuleiten?

8

Ich habe ein C ++ - Programm, das Eingabeaufforderungen ausgibt und Benutzereingaben über den Standard-Eingabestream cin durchführt.

Ich möchte ein vollständiges Transkript erhalten, das sowohl die Ausgabe des Programms als auch die Eingabe in einer Datei enthält.

Ich weiß, dass ich Eingabe / Ausgabe mit einer Befehlszeilenumleitung umleiten kann (dh ./program & lt; in.txt & gt; out.txt), aber dies füllt nur die Ausgabe des Programms als Antwort auf die Eingabe aus aus in.txt.

Ich möchte ein Transkript, das sowohl die Eingabe als auch die Ausgabe zeigt. Nehmen wir an, mein Programm gibt eine Eingabeaufforderung "\ nErgeben Sie eine Nummer aus:", nimmt eine vom Benutzer eingegebene Nummer und gibt sein Double aus "\ nZweimal Ihre Nummer ist:" und führt dies solange aus, bis der Benutzer eine 0 eingibt.

Nehmen wir an, ich habe in.txt mit:

  

1
  3
  0

Dann möchte ich ein Transkript von Eingabe / Ausgabe haben:

  

Geben Sie eine Nummer ein: 1
  Zweimal ist deine Nummer: 2
  Geben Sie eine Nummer ein: 3
  Zweimal ist deine Nummer: 6
  Geben Sie eine Nummer ein: 0
  Zweimal ist Ihre Nummer: 0

Tut mir leid, wenn ich das nicht gut erklärt habe ... Ich wusste nicht wirklich, wie ich es formulieren soll.

Gibt es eine Möglichkeit, dies einfach zu tun, oder muss ich nur die Eingabe von Hand eingeben ... und etwas vom Terminal speichern ...

    
zebraman 13.12.2010, 10:09
quelle

3 Antworten

3

script deckt Ihren genauen Anwendungsfall nicht ab. Sie möchten die Eingabe und Ausgabe Ihres Programms genau so sehen, wie ein Benutzer es sehen würde, ohne es selbst tun zu müssen.

Ich habe Expect gefunden, was genau das ist, wonach wir suchen. Ich kenne Tcl nicht, aber es gibt einen Python-Port, pexpect . Sie müssen pexpect installieren:

%Vor%

Kopieren Sie diesen Code anschließend in eine ausführbare Datei:

%Vor%

Und dann kannst du es so ausführen:

%Vor%

Mein Beispiellauf gab mir diese Ausgabe:

%Vor%

Wenn ich Ihre Frage richtig gelesen habe, sollte das genau die Antwort sein, nach der Sie suchen. Und es funktioniert auf jedem Programm ohne jegliche Änderung.

Hoffe das hilft!

-Jake

    
jakebman 15.12.2010 22:12
quelle
2

Der UNIX script Befehl wird es tun.

    
Beta 13.12.2010 10:55
quelle
0

Interessante Frage. Etwas, das plattformübergreifend sein sollte, ist wie im folgenden Beispiel (Ich habe unter Windows und * nix getestet, habe aber leider keinen Mac zum Testen). Im Grunde werden Sie die Ausgangsdatei lesen und ihre Daten extrahieren (im Beispiel wird davon ausgegangen, dass die Datei genau wie oben erwähnt formatiert ist) und diese Daten irgendwo speichern. Schreiben Sie dann die Daten zurück in die Datei, von der Sie sie gelesen haben.

%Vor%

Meine ursprüngliche Eingabedatei war:

%Vor%

Die Ausgabe war:

%Vor%

Hoffe, das hilft!

Viel Glück!
Dennis M.

    
RageD 13.12.2010 22:33
quelle

Tags und Links