Frage

Ich bin zur Zeit der Lehrassistent für eine Einführung in C Klasse. Die Klasse wird mit Visual Studio gelehrt, aber wenn ein Gehalt von benutze ich nur eine einfache Batch-Skript von Windows alle Zuordnung Eingaben zu verarbeiten, kompilieren sie, so dass sie auf einer Testdatei ausführen und die Ausgabe in eine Reihe von Textdateien, leite ich drucken kann aus, markieren und an Studenten zurückzugeben. Der gesamte Prozess funktioniert sehr gut, mit Ausnahme der Tatsache, dass, wenn ich stdin umleiten, es ist nicht in der Standardausgabe die gleiche Weise umgeleitet erscheint es tut, wenn die gleiche stdin direkt in die Konsole eingegeben wird. Aus diesem Grunde, wird der Ausgang des Codes für die Konsole formatiert nicht korrekt in der umgeleiteten Ausgabe anzuzeigen. Die folgenden Dateischnipsel zeigen dieses Problem. Kennt jemand eine einfache Lösung?

Datei: example.c

#include <stdio.h>

int main()
{
    int v;
    printf("Enter a number: ");
    scanf("%i", &v);
    printf("You entered: %d\n", v);
    return 0;
}

Datei: input.txt

42

Ausgabe (Konsole)

C:\>example.exe
Enter a number: 42
You entered: 42

C:\>

Ausgabe (Redirection)

C:\>example.exe < input.txt > output.txt

C:\>more output.txt
Enter a number: You entered: 42

C:\>
War es hilfreich?

Lösung

Dies wird (korrekte) Verhalten erwartet. Der Eingang ist nie Teil stdout. Wenn Sie example.exe > output.txt und blind in 42 geben, sollten Sie erwarten, dass 42 auch nur ein einziges Mal in der Ausgabe erscheint.

Die einzige Lösung, die ich denken könnte, ist, dass das Terminal / Shell die Sitzung als Ganzes aufzeichnet. Windows-Befehlsshell ist nicht dazu in der Lage. Sie könnten Ihre eigenen Terminal Proxy schreiben allerdings, die stdin in den Schüler-Programm-Feeds und liest die Ausgabe selbst, während beide in einer kombinierten Art und Weise auszuschreiben. Es ist ziemlich einfach für exection eines anderen Programms gabeln und dass jemandes stdin / heraus unter POSIX umleiten (Ihnen von Cygwin zur Verfügung gestellt), ich weiß nicht, über Ebene DOS / Windows though.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top