Ich dachte getchar()
oder fflush(stdin)
verwendet wurde, das Newline oder Raum, der von dem vorherigen Eingang links zu nehmen, weil die gets()
Funktion nicht in der Lage ist, zwischen dem Newline zu unterscheiden und dem Eingang wir bieten. Wir brauchten diese nicht, wenn wir %s
auf der scanf
Funktion verwenden. Warum brauchen wir es, wenn wir %c
oder %d
für dieselbe Funktion verwenden?Verwirren über getchar() und fflush (stdin) Verhalten
Antwort
Tatsache ist, dass fflush()
kein definiertes Verhalten für Eingabeströme hat, gibt es einige spezifische Implementierung definiert Verhalten. Auch gibt es fpurge()
in glibc was macht was Sie wollen.
Wenn scanf()
mit der Regel ist, dass es aufhören wird, wenn es ein weißer Raum findet als Zeichen von isspace()
zurückgegeben, außer wenn %c
mit denen anders verhält, als es Leerräume erfassen kann, oder ignorieren sie alle voraus, wenn sie von einem weißen Raum .
Auch die gets()
Funktion ist gefährlich und wurde vor kurzem aus dem c Standard entfernt, so dass Sie es nicht verwenden oder es als ein Beispiel bezeichnen sollten.
Die fgets()
-Funktion, die eine bessere Version von gets()
ist die letzte '\n'
wenn es kann nicht erfassen, das heißt, wenn die Anzahl der bisher erfassten Zeichen überschreitet nicht den Wert der IT zweiter Parameter ist, so dass Sie brauchen nicht flush alles danach.
Sie sollten bedenken, dass scanf()
nicht nur den letzten '\n'
im Eingabepuffer hinterlässt, sondern auch alle Leerzeichen dahinter. So eine einzige getchar()
ist in der Regel nicht genug, sollten Sie getchar()
so viele Leerräume wie dort gelassen wurden, um das scheinbare Verhalten von fflush(stdin)
zu gewährleisten.
- 1. fflush (stdin) funktioniert nicht in Visual Studio 2015
- 2. Was macht fflush (stdin) in C-Programmierung?
- 3. Verwirren über Array-Parameter
- 4. verwirren über den ParentNode
- 5. Verwirren über char-Array
- 6. Verwirrt über getchar() Funktion
- 7. Verwirren über .pop und .split in Python
- 8. was ist die Verwendung von fflush (stdin) in C-Programmierung
- 9. Verwirren über Python Zusammenarbeit Syntax
- 10. C: Unterschied im Verhalten von scanf und getchar
- 11. fflush() blockiert manchmal für über 1 Sekunde
- 12. Kann fseek (stdin, 1, SEEK_SET) oder rewind (stdin) verwendet werden, um den Eingabepuffer anstelle von nicht-portablem fflush (stdin) zu löschen?
- 13. Unterschied zwischen fflush und fsync
- 14. getchar() und Pufferreihenfolge
- 15. Verwirren über K & R Implementierung von malloc
- 16. Verwirren über den Index von Array bekommen
- 17. AngularJS: Verwirren über Objektverweis in $ scope
- 18. Verwirren über Fehler mit srand() Funktion
- 19. getchar() = EOF
- 20. C# bidirektionaler IPC über stdin und stdout
- 21. Verwirren über gcc -static Option oder sein Verhalten in der virtuellen Maschine
- 22. stdout und stdin Beziehungen
- 23. fflush, fsync und sync vs memory layers
- 24. Putchar und Getchar in C
- 25. C-Code, scanf und getchar
- 26. Reimplementierung getContents GetChar mit
- 27. Wie stdin in C richtig lesen?
- 28. Reinigung stdin Puffer Ausgabe
- 29. getc Vs getchar Vs Scanf für
- 30. Python cgi und stdin
'fflush (stdin)' ist undefiniertes Verhalten – yano