fwrite nicht alles drucken, um stdout
Wenn ich mit diesem kleinen code, und geben Sie 3 ganze zahlen auf der Konsole, ist es nicht ausdrucken, wie es sollte aufgrund der fwrite-Anweisung. Er druckt erst, nachdem ich halten, drücken Sie enter für einige Zeit. Hilfe?
P. S: schneller Lernen Möglichkeiten, als scanf und printf.
#include<stdio.h>
int main(){
int size[3];
fread(&size,sizeof(int),3,stdin);
fwrite(&size,sizeof(int),3,stdout);
fflush(stdout);
return 0;
}
InformationsquelleAutor prateekj_ahead | 2013-06-23
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies ist, weil
fread
liest binäre Daten, nicht formatierten text, so, wenn Sie sagen, es zu Lesen 3 "ints" es wird gelesen 3*4=12 bytes raw Daten von der Standardeingabe. Wenn Sie Typ "1" "2" "3", der nur drei bytes von text, plus drei neue Zeilen. Sobald Sie geben zwölf bytes wird es wohl vorbei, das Teil, aber dann ist dein Programm wohl gebrochen, vorausgesetzt, Sie wollte Lesen und schreiben, eigentliche text.Du meinst, du bist "schneller lernen Möglichkeiten, als scanf und printf." Nun, dies ist nicht ein schneller Weg, es ist nur ein Gebrochener Weise. Wenn du ein performance-Problem in einige code mit scanf & printf, Fragen Sie bitte eine separate Frage und wir helfen mit, dass.
Es bekam. Vielen Dank, John! Naja, eigentlich hatte ich zum Scannen ein großes Nein. der 'ints' von stdin, Sie zu Sortieren und schließlich drucken Sie auf die Standardausgabe. Mit der konventionellen "scanf" und "printf ()" - Methode nimmt eine MENGE Zeit. Was sollte getan werden?
InformationsquelleAutor John Zwinck
Größe
int
ist 4 bytes also Ihrefread()
werden versuchen, zu Lesen 12 Byte (4 * 3).Wenn du etwas eingibst, die so auf Konsole
es ist 6 Zeichen = 3 zahlen + 2 Räume + 1 \n
Damit würden Sie die EINGABETASTE drücken, zumindest 6-mal, so dass es liest 6 Byte.
Besser
scanf()
um Ganzzahlen alsInformationsquelleAutor Rohan