Hallo,

ich hab ein Cast Problem mit char und sprintf.
Das Problem liegt sicher in der Definition der Funktion oder wie ich das char[] zurückgebe.

Code:
char zeit(volatile unsigned long int zs)
{
	char zeitstring[5];

	uint16_t tag = floor(zs / 86400);
	uint8_t stunde = floor((zs - (tag * 86400)) / 3600);
	uint8_t minute = floor((zs - (tag * 86400) - (stunde * 3600)) / 60);
	//uint8_t sekunde = floor(zs - (tag * 86400) - (stunde * 3600) - (minute * 60));

	if(minute < 10 && stunde < 10) {
		sprintf(zeitstring, "0%d:0%d", stunde, minute);
	}
	else if(stunde < 10) {
		sprintf(zeitstring, "0%d:%d", stunde, minute);
	}
	else if(minute < 10) {
		sprintf(zeitstring, "%d:0%d", stunde, minute);
	}
	else {
		sprintf(zeitstring, "%d:%d", stunde, minute);
	}

	return zeitstring;
}
Ich bekomme auch 2 Warnungen. Aber bin auch durch rumprobieren nicht weiter gekommen.

warning: return makes integer from pointer without a cast
warning: function returns address of local variable

____

Die Funktion wird benutzt um die Zeit auf ein Display auszugeben. Da kommen aber nur krumme Zeichen.

Ich hoffe ihr könnt helfen.
Danke