Forum: Compiler & IDEs Uhrzeit in String umwandeln


von flea (Gast)


Lesenswert?

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:
1
char *uhrzeit_string = NULL;
2
3
sprintf(uhrzeit_string, "%i:%i:%i", uhrzeit.stunden, uhrzeit.minuten, uhrzeit.sekunden);
4
lcd_clrscr();
5
lcd_gotoxy(0,0);
6
lcd_puts("Uhrzeit:");
7
lcd_gotoxy(0,1);
8
lcd_puts(uhrzeit_string);
9
long_delay(50);

von jonny (Gast)


Lesenswert?

Vll. so:
1
char uhrzeit_string[10];
2
3
sprintf(uhrzeit_string, "%i:%i:%i", uhrzeit.stunden, uhrzeit.minuten, uhrzeit.sekunden);
4
lcd_clrscr();
5
lcd_gotoxy(0,0);
6
lcd_puts("Uhrzeit:");
7
lcd_gotoxy(0,1);
8
lcd_puts(uhrzeit_string);
9
long_delay(50);

von Karl H. (kbuchegg)


Lesenswert?

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.

von flea (Gast)


Lesenswert?

ach stimmt ja!!!!!

Danke, funktioniert!

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.