C-Programm Textausgabe am Ende des Programms

  • Ab sofort steht euch hier im Forum die neue Add-on Verwaltung zur Verfügung – eine zentrale Plattform für alles rund um Erweiterungen und Add-ons für den DSM.

    Damit haben wir einen Ort, an dem Lösungen von Nutzern mit der Community geteilt werden können. Über die Team Funktion können Projekte auch gemeinsam gepflegt werden.

    Was die Add-on Verwaltung kann und wie es funktioniert findet Ihr hier

    Hier geht es zu den Add-ons

Status
Für weitere Antworten geschlossen.

Robofan

Benutzer
Registriert
07. Sep. 2009
Beiträge
48
Reaktionspunkte
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?
 
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?
 
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
 
evtl. erfolgt die Ausgabe erst, wenn ein Linefeed dabei ist.
Schonmal mit
Code:
printf("Text\n");
probiert?
 
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