![]() |
In stdin schreiben und gleich wieder auslessen Ansi C
Hallo,
ich habe mal eine Frage, warum geht das nicht so:
Delphi-Quellcode:
fprintf(stdin, "a\n");
fgets(test, 2, stdin); Ich möchte in die stdin schreiben, und das dann sofort wieder auslessen. Irgendwie wird die fprintf anweisung ignoriert. (Bitte jetzt nicht nach den Sinn des Progs fragen^^) |
Re: In stdin schreiben und gleich wieder auslessen Ansi C
Was meinst du mit wird ignoriert?
Zitat:
|
Re: In stdin schreiben und gleich wieder auslessen Ansi C
Hello,
na es ist kein unterschied, ob ich die Zeile schreibe oder nicht. Eigentlich sollte doch in test dannach "a\n" drin stehen, doch stattdessen wartet fgets auf eine Eingabe vom Benutzer und macht erst nach dem Drücken der Entertaste weiter. |
Re: In stdin schreiben und gleich wieder auslessen Ansi C
Zitat:
Warum das Ding wohl Standard Input heißt. Da kannst du nicht drauf schreiben, da du am falschen Ende des Rohrs sitzt. |
Re: In stdin schreiben und gleich wieder auslessen Ansi C
Das heisst aber nicht, dass das printf nicht ausgeführt wird, sondern eher das STDIN nicht als Ausgabedevice fungieren kann
|
Re: In stdin schreiben und gleich wieder auslessen Ansi C
Und ist stdin nicht Benutzereingabe? :gruebel:
|
Re: In stdin schreiben und gleich wieder auslessen Ansi C
Zitat:
genauso gut könntest du fragen wie du vom drucker tastatureingaben einlesen kannst oder auf der tastatur 'n formular ausgeben... :drunken: |
Re: In stdin schreiben und gleich wieder auslessen Ansi C
Hello,
hab grad gelesen das stdin nur zum lesen geöffnet ist... :-( Habe das Posting auch hier gepostet ![]() da wird die funktion ungetc vorgeschlagen, muss mich mal damit ein wenig spielen |
Re: In stdin schreiben und gleich wieder auslessen Ansi C
ungetc schiebt das letzte, durch getch, eingelesene zeichen wieder zurück in den buffer, damit es beim nächsten getch eingelesen werden kann. das hat nix mit deinem ursprünglichen problem zu tun. auch ungetc, erstellt dir kein formular auf der tastatur ;-)
|
Re: In stdin schreiben und gleich wieder auslessen Ansi C
Wieso dsa letzte zeichen, ich kann ja als Parameter ein Zeichen angeben
ungetc('a', stdin); Also das klappt bei mir auch sowei ungetc('a', stdin); fgets(test, 2, stdin); printf("Der Buchstabe ist: --> %s <--\n",test); gibt mir ein a aus, wenn ich Enter drücke. Mein Problemm ist jetzt, das wenn ich ungetc('a', stdin); ungetc('\n', stdin); fgets(test, 2, stdin); printf("Der Buchstabe ist: --> %s <--\n",test); schreibe, dann muss der Benutzer nicht Enter drücken, aber es wird das a nicht mehr ausgegeben :-( glaube ungetc löscht den Buffer oder so... EDIT: Jetzt kapier ichs, der ließt dann zuerst \n ein und dann erst a, der dreht alles um..... na da muss ich mich noch ein wenig spielen |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:30 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz