www.mikrocontroller.net

Forum: Compiler & IDEs Uhrzeit in String umwandeln


Autor: flea (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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:
char *uhrzeit_string = NULL;

sprintf(uhrzeit_string, "%i:%i:%i", uhrzeit.stunden, uhrzeit.minuten, uhrzeit.sekunden);
lcd_clrscr();
lcd_gotoxy(0,0);
lcd_puts("Uhrzeit:");
lcd_gotoxy(0,1);
lcd_puts(uhrzeit_string);
long_delay(50);

Autor: jonny (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vll. so:
char uhrzeit_string[10];

sprintf(uhrzeit_string, "%i:%i:%i", uhrzeit.stunden, uhrzeit.minuten, uhrzeit.sekunden);
lcd_clrscr();
lcd_gotoxy(0,0);
lcd_puts("Uhrzeit:");
lcd_gotoxy(0,1);
lcd_puts(uhrzeit_string);
long_delay(50);

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: flea (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ach stimmt ja!!!!!

Danke, funktioniert!

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.