Wenn ich versuche, die folgenden einfachen Code unter TDM_GCC unter Windows 10, laufenundefined Verweis auf ‚setlinebuf‘
#include<stdio.h>
int main(){
double input;
setlinebuf(stdout);
printf("Enter Your Input -");
scanf("%If", &input);
printf("ENtered name is %f", input);
return 0;
}
es kompiliert (über gcc) mit einem Fehler, der besagt, dass - nicht definiert Hinweis auf ‚setlinebuf‘ . Ich benutze Setlinebuf, um den Puffer nur Zeilenweise zu haben.
Terminals sind standardmäßig gepuffert, so dass 'setlinebuf (stdout);' nichts wirklich tut, solange Sie die Ausgabe nicht in eine Datei umleiten. –
Sie können 'setlinebuf (stdout)' durch 'setvbuf (stdout, NULL, _IOLBF, BUFSIZ)' ersetzen (indem Sie 'BUFSIZ' möglicherweise durch eine andere Größe ersetzen). Die Windows-C-Laufzeitbibliothek behandelt '_IOLBF' jedoch als vollständig gepuffert, genau wie' _IOFBF'. Für die interaktive Verwendung müssen Sie daher 'ffflush (stdout)' aufrufen, nachdem Sie zur Eingabe aufgefordert wurden, oder alternativ 'stdout festlegen 'über' setvbuf (stdout, NULL, _IONBF, 0) 'ungepuffert zu sein' '. –