Nach der letzten Woche auf Xcode 8.3 aktualisiert, in einem C/C++ Programm die Ausgabe von einer printf
Anweisung nicht mehr auf dem Bildschirm ohne eine Zeilenumbruch angezeigt. Daher kann ich den Benutzer nicht auffordern, eine Nummer einzugeben, und sie müssen diese Nummer in derselben Zeile eingeben, die der Eingabeaufforderung folgt.In Xcode 8.3 Update, C/C++ Programmierung printf gibt keine Ausgabe ohne Zeilenumbruch
Weder die Ausgangspuffer Spülung [fflush(stdout)
oder cout << endl
] noch den Ausgabepuffer [setbuf(stdout, NULL)
] behebt dieses Problem auf NULL Einstellung, sondern ist eine Frage speziell über Xcode 8.3 scheinbar gebrochen.
Mit dem scanf
Kommentar gesetzt, die Ausgabe des Programms ist unten:
Enter a value for x: Value of x is: 0
Mit scanf anstelle der Ausgabe von der ersten printf nie auftaucht. Wenn Sie fortfahren und einen Wert eingeben und die Eingabetaste drücken, wird nur und dann angezeigt. Die Ausgabe ist:
3
Enter a value for x: Value of x is: 3
Volltestprogramm ist hier:
#include <iostream>
using namespace std;
int main() {
int x=0;
printf("Enter a value for x: ");
//scanf("%d", &x);
printf("Value of x is: %d\n", x);
return 0;
}
Meine Behelfslösung war zu Xcode um wieder zurück 8.2.1, heruntergeladen von developer.apple.com/xcode/downloads/
Ich bin ziemlich sicher, dass das Standardverhalten (nicht Standard definierte, aber typisch), bis ein Newline nicht zu spülen ist geschrieben wird, puffern, so viel Inhalt wie möglich (es sei denn, es ist natürlich explizit geleert) –
Funktioniert es, wenn Sie 'stdout' spülen? Ich frage, weil wir eine wirklich ähnliche Frage mit 'std :: cout 'in C++ hatten, wo XCode nicht druckt (ungeachtet des Errötens), bis ein Zeilenumbruch hinzugefügt wird: http://stackoverflow.com/questions/43158839/ c-not-show-cout-in-xcode-konsole-aber-läuft-perfekt-in-terminal Bitte fügen Sie einen Zeilenumbruch hinzu und teilen Sie uns mit, ob Ihr Problem weiterhin auftritt. EDIT: Bitte versuchen Sie auch zu 'stderr' zu drucken, wie vorgeschlagen in der Frage @NobodyNada posted einen Link zu. – datell
Dies ist kein C-Code, sondern anscheinend C++. Verwenden Sie die richtigen Tags und bearbeiten Sie Ihren Text! – Olaf