Tuesday 11 April 2017

Freopen Stdin Binär Optionen

Die einfache Antwort ist nein. Der Modus wird bestimmt, wenn das iostream-Objekt aufgebaut ist und nicht später geändert werden kann. Einige Implementierungen können ein Mittel dazu geben, es später zu tun, aber das ist nicht standardisiert. Bei einigen Implementierungen kann ein Freopen auf Stdout den Modus verändern, obwohl ich denke, dass es offensichtlich ist, dass dies in C verboten ist. (Es ist die Implementierung in C definiert) Und anscheinend funktioniert es nicht bei deiner Implementierung. Du bist die beste Wette, um herauszufinden, wie dein System das Konsolengerät nennt (devtty unter Unix CONS. Ich denke, unter Windows), öffne es im gewünschten Modus und gebe es aus. Beantwortet Apr 16 14 at 11: 34Reopen Stream mit verschiedenen Datei oder Modus Reuses Stream entweder öffnen Sie die Datei durch Dateiname spezifiziert oder um den Zugriffsmodus zu ändern. Wenn ein neuer Dateiname angegeben ist, versucht die Funktion zunächst, alle Dateien zu schließen, die bereits mit dem Stream (dritter Parameter) verknüpft sind, und zerlegt sie. Dann, unabhängig davon, ob dieser Stream erfolgreich geschlossen wurde oder nicht, öffnet freopen die Datei, die durch den Dateinamen spezifiziert ist, und assoziiert sie mit dem Stream genauso wie fopen mit dem angegebenen Modus arbeiten würde. Wenn Dateiname ein Nullzeiger ist, versucht die Funktion, den Modus des Streams zu ändern. Obwohl eine bestimmte Bibliotheksimplementation erlaubt ist, die erlaubten Änderungen zu beschränken und unter welchen Umständen. Die Fehleranzeige und die Eof-Anzeige werden automatisch gelöscht (wie wurde clearerr aufgerufen). Diese Funktion eignet sich besonders für die Umleitung vordefinierter Streams wie Stdin. Stdout und stderr zu bestimmten Dateien (siehe Beispiel unten). Parameter Dateiname C string mit dem Namen der zu öffnenden Datei. Sein Wert folgt den Dateinamen Spezifikationen der laufenden Umgebung und kann einen Pfad (falls vom System unterstützt) enthalten. Wenn dieser Parameter ein Nullzeiger ist, versucht die Funktion, den Modus des Streams zu ändern. Als ob der Dateiname, der derzeit mit diesem Stream verknüpft ist, verwendet wurde. Modus C-String mit einem Dateizugriffsmodus. Es kann sein: lesen: Datei für Eingabeoperationen öffnen Die Datei muss vorhanden sein. Schreiben: Leere Datei für Ausgabeoperationen erstellen Wenn eine Datei mit demselben Namen bereits vorhanden ist, wird ihr Inhalt verworfen und die Datei wird als neue leere Datei behandelt. Append: Datei für die Ausgabe am Ende einer Datei öffnen. Die Ausgabeoperationen schreiben immer Daten am Ende der Datei und erweitern sie. Neupositionierung von Vorgängen (fseek. Fsetpos. Rücklauf) werden ignoriert. Die Datei wird erstellt, wenn sie nicht existiert. Readupdate: Öffnen Sie eine Datei zum Update (sowohl für Eingabe als auch Ausgabe). Die Datei muss vorhanden sein. Writeupdate: Erstellen Sie eine leere Datei und öffnen Sie sie für die Aktualisierung (sowohl für Eingabe und Ausgabe). Wenn eine Datei mit demselben Namen bereits vorhanden ist, wird ihr Inhalt verworfen und die Datei wird als neue leere Datei behandelt. Appendupdate: Öffnen Sie eine Datei zum Update (sowohl für Eingabe und Ausgabe) mit allen Ausgabeoperationen, die Daten am Ende der Datei schreiben. Die Neupositionierung von Vorgängen (fseek. Fsetpos. windung) wirkt sich auf die nächsten Eingabedationen aus, aber die Ausgabeoperationen verschieben die Position zurück zum Ende der Datei. Die Datei wird erstellt, wenn sie nicht existiert. Mit den Modus-Spezifizierungen oberhalb der Datei ist als Textdatei geöffnet. Um eine Datei als Binärdatei zu öffnen. Ein b-Zeichen muss in den Modus-String aufgenommen werden. Dieses zusätzliche b-Zeichen kann entweder am Ende des Strings angehängt werden und so die folgenden zusammengesetzten Modi: rb, wb, ab, rb, wb, ab) oder zwischen den Buchstaben und das Vorzeichen für die gemischten Modi (rb, Wb, ab). Der neue C-Standard (C2011, der nicht Teil von C ist) fügt einen neuen Standard-Subspecifier (x) hinzu, der an jeden beliebigen w-Spezifizierer angehängt werden kann (um wxx wxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx Dieser Unterspeicher zwingt die Funktion zu scheitern, wenn die Datei existiert, anstatt sie zu überschreiben. Wenn zusätzliche Zeichen der Sequenz folgen, hängt das Verhalten von der Bibliotheksimplementierung ab: Einige Implementierungen können zusätzliche Zeichen ignorieren, so dass beispielsweise ein zusätzliches t (manchmal verwendet wird, um explizit eine Textdatei anzugeben) akzeptiert wird. Bei einigen Bibliotheksimplementierungen kann das Öffnen oder Erstellen einer Textdatei mit dem Aktualisierungsmodus den Stream stattdessen als Binärdatei behandeln. Stream-Zeiger auf ein FILE-Objekt, das den zu öffnenden Stream identifiziert. Rückgabewert Wenn die Datei erfolgreich wieder geöffnet wird, gibt die Funktion den als Parameterstrom übergebenen Zeiger zurück. Die verwendet werden können, um den wiedereröffneten Strom zu identifizieren Andernfalls wird ein Nullzeiger zurückgegeben. Bei den meisten Bibliotheksimplementierungen wird die errno-Variable auch auf einen systemspezifischen Fehlercode beim Ausfall gesetzt. Oft die Datei, deren Name im Parameter Dateiname angegeben ist, und assoziiert sie mit einem Stream, der in zukünftigen Operationen durch den zurückgegebenen FILE-Zeiger identifiziert werden kann . Die Operationen, die auf dem Stream erlaubt sind und wie diese ausgeführt werden, werden durch den Modusparameter definiert. Der zurückgegebene Stream ist standardmäßig vollständig gepuffert, wenn bekannt ist, dass er sich nicht auf ein interaktives Gerät bezieht (siehe setbuf). Der zurückgegebene Zeiger kann aus der Datei getrennt werden, indem er fclose oder freopen aufruft. Alle geöffneten Dateien werden bei normaler Programmbeendigung automatisch geschlossen. Die laufende Umgebung unterstützt mindestens FOPENMAX-Dateien gleichzeitig. Parameter Dateiname C string mit dem Namen der zu öffnenden Datei. Sein Wert folgt den Dateinamen Spezifikationen der laufenden Umgebung und kann einen Pfad (falls vom System unterstützt) enthalten. Modus C-String mit einem Dateizugriffsmodus. Es kann sein: lesen: Datei für Eingabeoperationen öffnen Die Datei muss vorhanden sein. Schreiben: Leere Datei für Ausgabeoperationen erstellen Wenn eine Datei mit demselben Namen bereits vorhanden ist, wird ihr Inhalt verworfen und die Datei wird als neue leere Datei behandelt. Append: Datei für die Ausgabe am Ende einer Datei öffnen. Die Ausgabeoperationen schreiben immer Daten am Ende der Datei und erweitern sie. Neupositionierung von Vorgängen (fseek. Fsetpos. Rücklauf) werden ignoriert. Die Datei wird erstellt, wenn sie nicht existiert. Readupdate: Öffnen Sie eine Datei zum Update (sowohl für Eingabe als auch Ausgabe). Die Datei muss vorhanden sein. Writeupdate: Erstellen Sie eine leere Datei und öffnen Sie sie für die Aktualisierung (sowohl für Eingabe und Ausgabe). Wenn eine Datei mit demselben Namen bereits vorhanden ist, wird ihr Inhalt verworfen und die Datei wird als neue leere Datei behandelt. Appendupdate: Öffnen Sie eine Datei zum Update (sowohl für Eingabe und Ausgabe) mit allen Ausgabeoperationen, die Daten am Ende der Datei schreiben. Die Neupositionierung von Vorgängen (fseek. Fsetpos. windung) wirkt sich auf die nächsten Eingabedationen aus, aber die Ausgabeoperationen verschieben die Position zurück zum Ende der Datei. Die Datei wird erstellt, wenn sie nicht existiert. Mit den Modus-Spezifizierungen oberhalb der Datei ist als Textdatei geöffnet. Um eine Datei als Binärdatei zu öffnen. Ein b-Zeichen muss in den Modus-String aufgenommen werden. Dieses zusätzliche b-Zeichen kann entweder am Ende des Strings angehängt werden und so die folgenden zusammengesetzten Modi: rb, wb, ab, rb, wb, ab) oder zwischen den Buchstaben und das Vorzeichen für die gemischten Modi (rb, Wb, ab). Der neue C-Standard (C2011, der nicht Teil von C ist) fügt einen neuen Standard-Subspecifier (x) hinzu, der an jeden beliebigen w-Spezifizierer angehängt werden kann (um wxx wxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx Dieser Unterspeicher zwingt die Funktion zu scheitern, wenn die Datei existiert, anstatt sie zu überschreiben. Wenn zusätzliche Zeichen der Sequenz folgen, hängt das Verhalten von der Bibliotheksimplementierung ab: Einige Implementierungen können zusätzliche Zeichen ignorieren, so dass beispielsweise ein zusätzliches t (manchmal verwendet wird, um explizit eine Textdatei anzugeben) akzeptiert wird. Bei einigen Bibliotheksimplementierungen kann das Öffnen oder Erstellen einer Textdatei mit dem Aktualisierungsmodus den Stream stattdessen als Binärdatei behandeln. Textdateien sind Dateien, die Sequenzen von Textzeilen enthalten. Abhängig von der Umgebung, in der die Anwendung ausgeführt wird, kann eine spezielle Zeichenumwandlung in Inputoutput-Operationen im Textmodus auftreten, um sie an ein systemspezifisches Textdateiformat anzupassen. Obwohl in einigen Umgebungen keine Konversionen auftreten und sowohl Textdateien als auch Binärdateien gleich behandelt werden, verbessert der entsprechende Modus die Portabilität. Für Dateien, die für das Update geöffnet sind (diejenigen, die ein Vorzeichen enthalten), auf denen sowohl Eingangs - als auch Ausgangsoperationen erlaubt sind, muss der Stream vor einem Lesevorgang, der einem Schreibvorgang folgt, gelöscht werden (fflush) oder neu positioniert werden (fseek. Der Stream wird vor einem Schreibvorgang, der einem Lesevorgang folgt (wenn dieser Vorgang das End-of-File nicht erreicht hat) neu positioniert (fseek. Fsetpos. Rückgabewert Wenn die Datei erfolgreich geöffnet wird, gibt die Funktion einen Zeiger auf ein FILE-Objekt zurück, mit dem der Stream auf zukünftige Operationen identifiziert werden kann. Andernfalls wird ein Nullzeiger zurückgegeben. Bei den meisten Bibliotheksimplementierungen wird die errno-Variable auch auf einen systemspezifischen Fehlercode beim Ausfall gesetzt.


No comments:

Post a Comment