AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language In stdin schreiben und gleich wieder auslessen Ansi C
Thema durchsuchen
Ansicht
Themen-Optionen

In stdin schreiben und gleich wieder auslessen Ansi C

Ein Thema von ferby · begonnen am 12. Mai 2008 · letzter Beitrag vom 12. Mai 2008
Antwort Antwort
ferby

Registriert seit: 15. Aug 2004
Ort: Wien
841 Beiträge
 
Delphi 2010 Enterprise
 
#1

In stdin schreiben und gleich wieder auslessen Ansi C

  Alt 12. Mai 2008, 19:58
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^^)
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: In stdin schreiben und gleich wieder auslessen Ansi C

  Alt 12. Mai 2008, 20:16
Was meinst du mit wird ignoriert?
Zitat:
(Bitte jetzt nicht nach den Sinn des Progs fragen^^)
Gut dann frage ich nicht was es soll.
Markus Kinzler
  Mit Zitat antworten Zitat
ferby

Registriert seit: 15. Aug 2004
Ort: Wien
841 Beiträge
 
Delphi 2010 Enterprise
 
#3

Re: In stdin schreiben und gleich wieder auslessen Ansi C

  Alt 12. Mai 2008, 20:18
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.
  Mit Zitat antworten Zitat
jbg

Registriert seit: 12. Jun 2002
3.481 Beiträge
 
Delphi 10.1 Berlin Professional
 
#4

Re: In stdin schreiben und gleich wieder auslessen Ansi C

  Alt 12. Mai 2008, 20:22
Zitat von ferby:
Ich möchte in die stdin schreiben
Du bist also jemand der zum Eingang wieder hinaus will und gegen den ganzen Strom von Menschen anläuft. Da ist es doch kein Wunder, wenn du nicht raus kommst.
Warum das Ding wohl Standard Input heißt. Da kannst du nicht drauf schreiben, da du am falschen Ende des Rohrs sitzt.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: In stdin schreiben und gleich wieder auslessen Ansi C

  Alt 12. Mai 2008, 20:27
Das heisst aber nicht, dass das printf nicht ausgeführt wird, sondern eher das STDIN nicht als Ausgabedevice fungieren kann
Markus Kinzler
  Mit Zitat antworten Zitat
Nuclear-Ping
(Gast)

n/a Beiträge
 
#6

Re: In stdin schreiben und gleich wieder auslessen Ansi C

  Alt 12. Mai 2008, 20:28
Und ist stdin nicht Benutzereingabe?
  Mit Zitat antworten Zitat
grenzgaenger
(Gast)

n/a Beiträge
 
#7

Re: In stdin schreiben und gleich wieder auslessen Ansi C

  Alt 12. Mai 2008, 20:30
Zitat von ferby:
fprintf(stdin, "a\n"); Irgendwie wird die fprintf anweisung ignoriert.
tja, ist halt ein eingabekanal, kein ausgabekanal ...

genauso gut könntest du fragen wie du vom drucker tastatureingaben einlesen kannst oder auf der tastatur 'n formular ausgeben...
  Mit Zitat antworten Zitat
ferby

Registriert seit: 15. Aug 2004
Ort: Wien
841 Beiträge
 
Delphi 2010 Enterprise
 
#8

Re: In stdin schreiben und gleich wieder auslessen Ansi C

  Alt 12. Mai 2008, 20:35
Hello,

hab grad gelesen das stdin nur zum lesen geöffnet ist...


Habe das Posting auch hier gepostet
C Forum

da wird die funktion ungetc vorgeschlagen, muss mich mal damit ein wenig spielen
  Mit Zitat antworten Zitat
grenzgaenger
(Gast)

n/a Beiträge
 
#9

Re: In stdin schreiben und gleich wieder auslessen Ansi C

  Alt 12. Mai 2008, 20:52
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
  Mit Zitat antworten Zitat
ferby

Registriert seit: 15. Aug 2004
Ort: Wien
841 Beiträge
 
Delphi 2010 Enterprise
 
#10

Re: In stdin schreiben und gleich wieder auslessen Ansi C

  Alt 12. Mai 2008, 20:56
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
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:08 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz