flea wrote:
> Hallo,
>
> ich habe mir eine Digitaluhr gebastelt, die die aktuelle Zeit auf einem
> LCD-Dispaly ausgeben soll.
> Dabie habe ich aber das Problem, dass der Uhrzeit-String, der mit
> sprintf erstellt wird, nicht funktioniert.
> Wenn ich der char* - Variable manuell eine Zeichenkette zuweise
> ("text="Hallo") funktioniert das wunderbar. Nur nicht mit sprintf, aber
> wieso???
>
> Hier der Code:
> [c]
> char *uhrzeit_string = NULL;
>
> sprintf(uhrzeit_string, "%i:%i:%i", uhrzeit.stunden, uhrzeit.minuten,
> uhrzeit.sekunden);
sprintf möchte eine Speicherfläche, an der es das Ergebnis
(den Text) ablegen soll. Du hast keine Speicherfläche. Du
hast nur einen Pointer.
Ein Pointer kann auf eine Speicherfläche zeigen. Er enthält
eine Speicheradresse. Aber: Das heist noch lange nicht, dass
du dadurch auch den Speicher zur Verfügung hast.
Du musst aufpassen: Wenn eine Funktion in ihrer Argumentliste
einen Pointer hat, dann heist das in den meisten Fällen nicht,
dass du beim Aufrufer auch einfach nur einen Pointer brauchst.
In den meisten Fällen heist das: Die Funktion möchte die
Adresse einer Speicherfläche haben, mit der sie arbeiten kann.
Dann brauchst du aber auch tatsächlich eine Speicherfläche
(in den meisten Fällen wird das ein Array sein oder ein
Struktur-Objekt) und nicht nur einen Pointer, der den gleichen
Typ hat, wie das Argument der Funktion.