Archiv verlassen und diese Seite im Standarddesign anzeigen : C: Frage zu einer for Schleife
Stefan Feeser
29-08-2006, 11:37
Hallo zusammen,
kann mir jemand erklären warum folgendes Konstrukt funktioniert
for (i_i = 1; i_i < 10; i_i++)
{
printf("%d\n", i_i);
sleep(5);
}
und folgendes nicht?
for (i_i = 1; i_i < 10; i_i++)
{
printf(". ");
sleep(5);
}
Sorry, wenn ich vielleicht doof frage, aber wie schon ein paar mal auf diesem Board erwähnt übe ich noch (mache auch grade einen C/C++ Kurs)
Gruss und Danke
Stefan
SeeksTheMoon
29-08-2006, 12:53
die Zeile mit den Punkten wird nicht angezeigt, weil sie nicht mit einem \n abgeschlossen wird, nehme ich an.
Stefan Feeser
29-08-2006, 14:08
Hi,
ja das ist das Verhalten, sorry, dass ich das nicht besser beschrieben habe. Warum ist das aber so? Wenn ich die Funktion sleep weglasse, funktioniert das! Ich verstehe einfach hier die Funktionen nicht.
Vielleicht kann mir jemand ja einen Tipp geben wo ich die Ein-/Ausgabefunktionen und deren Verhalten genau nachlesen kann - wenn möglich nicht "man":), oder aber kurz erklären wo die Unterschiede sind. Mir sind übrigens auch noch nicht ganz die Unterschiede zwischen getchar und getc, bzw. die entsprechenden Ausgabependants klar...
Gruss
Stefan
for (i_i = 1; i_i < 10; i_i++)
{
printf(". ");
fflush( stdout ); // sollte helfen
sleep(5);
}
Stefan Feeser
29-08-2006, 14:57
Danke,
ich habe eben auch von einem Kollegen erfahren, dass sich printf so verhält, dass alles was im Speicher steht erst bei einem Carriage Return ausgegeben wird - es handelt sich bei C um eine zeilenorientierte Ausgabe.
Gruss
Stefan
Man koennte auch statt
printf(". ");
fflush( stdout );
fprintf( stderr, ". " );
verwenden!
wobei printf("???") und fprintf(stderr,"???") nicht das selbe bewirken ^^
wenn pech hast, faengt nen vorheriger shellbefehl die ausgabe auf der errorconsole ab und du wunderst dich warum nichts siehst ^^
das flushen iss schon der bessere weg
Ciao ...
Natuerlich sind printf("???") und fprintf(stderr,"???") nicht das gleiche.
Mir ist nur so der Gedanke gekommen dass man das auch mit stderr auch machen koennte - wobei natuerlich fflush( stdout ) zu bevorzugen ist, keine Frage!
wobei natuerlich fflush( stdout ) zu bevorzugen ist, keine Frage!Nicht unbedingt. Ich hasse programme, die stdout mit sinnlosen Fortschrittsbalken vollmüllen, die ich dann von Hand rausschneiden muss, wenn ich die Ausgabe des Programmes in eine Datei geleitet habe.
Für sowas hat sich eingebürgert, stderr zu verwenden, auch wenn das strenggenommen ein Mißbrauch ist.
Powered by vBulletin® Version 4.2.5 Copyright ©2025 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.