C-Programm Textausgabe am Ende des Programms

Status
Für weitere Antworten geschlossen.

Robofan

Benutzer
Mitglied seit
07. Sep 2009
Beiträge
48
Punkte für Reaktionen
0
Punkte
0
Hallo.

Ich habe gerade GCC auf meiner DS installiert und gleich probiert ein C-Programm zu schreiben. Ich habe folgenden Quellcode:
Rich (BBCode):
#include <stdio.h>
#include <math.h>
#include <string.h>
#include <time.h>
#include <unistd.h>

int main(void)
{

	for(int i=0; i < 5; i++)
	{
		sleep(1);
		printf("Text");
	}
	return 0;
}
Das Programm wird kompiliert, allerdings wird der Text erst nach fünf Sekunden ausgegeben, das heißt am Ende des Programms. Jedoch sollte das Programm immer eine Sekunde warten, Text ausgeben, eine Sekunde warten. Wenn ich in das Programm jetzt einen anderen Befehl als printf einbaue, wird dieser dann zur richtigen Zeit ausgeführt?
 

Robofan

Benutzer
Mitglied seit
07. Sep 2009
Beiträge
48
Punkte für Reaktionen
0
Punkte
0
Das Komische ist: das folgende Programm funktioniert einwandfrei?!

Rich (BBCode):
#include <stdio.h>
#include <math.h>
#include <string.h>
#include <time.h>
#include <unistd.h>

int main(void)
{
	time_t start, end;
	time_t prg_start, prg_end;
	double elapsed;

	prg_start = time(NULL);
	for(int i=0; i < 5; i++)
	{
		start = time(NULL);
		sleep(1);
		end = time(NULL);
		elapsed = difftime(end, start);
		printf("Zwischenzeit: %.d", (int)elapsed);
		printf("\n");
	}
	prg_end = time(NULL);
	elapsed = difftime(prg_end, prg_start);
	printf("Programmzeit: %.d", (int)elapsed);
	printf("\n");
	return 0;
}
Woran liegt das?
 

janus

Benutzer
Mitglied seit
07. Sep 2010
Beiträge
667
Punkte für Reaktionen
0
Punkte
0
Das Komische ist: das folgende Programm funktioniert einwandfrei?!

Woran liegt das?

Grund: Grundkenntnisse in C fehlen. :rolleyes:

Es kann durchaus sein, dass der Ausgabepuffer nicht sofort auf den Bildschirm geschrieben wird. Meine C Zeiten sind aber zu lange her, um dir noch konkret sagen zu können, wie man einen Flush auslöst.

Ob du mit solchen grundlegenden Fragen unbedingt in einem Synology Forum an der richtigen Stelle bist?

Gruß

Janus
 

Benares

Benutzer
Sehr erfahren
Mitglied seit
27. Sep 2008
Beiträge
12.250
Punkte für Reaktionen
2.846
Punkte
423
evtl. erfolgt die Ausgabe erst, wenn ein Linefeed dabei ist.
Schonmal mit
Code:
printf("Text\n");
probiert?
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
Der printf() ist meist gepuffert. Im C-Handbuch mal nachschlagen, es gibt auch die ungepufferte Ausgabe ... oft hilft schon, statt auf stdout auf stderr auszugeben (was ja auch der Konsole entspricht).

Tipp: Ich hab im AdminTool auch eine Mini-C-Entwicklungsumgebung eingebaut (Editor, Kompiler, Ausführen ... sogar mit make)

Itari
 
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat