www.mikrocontroller.net

Forum: Compiler & IDEs Int in string


Autor: Stefan_h (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

Wie wnadle ich ein iteger in einen string um??

lg,

Stefan

Autor: Andreas Schwarz (andreas) (Admin) Benutzerseite Flattr this
Datum:

Bewertung
0 lesenswert
nicht lesenswert
itoa() oder sprintf()

Autor: Stefan_H (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

In welcher Include sind die Funktionen, in der string.h hab ich sie 
nicht finden können, den ich wollte es zuerst mit sprintf(); machen, 
aber konnte eben die routine nicht finden.

lg,

Stefan

Autor: Andreas Schwarz (andreas) (Admin) Benutzerseite Flattr this
Datum:

Bewertung
0 lesenswert
nicht lesenswert
zu sprintf: siehe www.mikrocontroller.net/avr-gcc-faq.htm
itoa() müsste in stdlib.h deklariert sein.

Autor: Stefan_h (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

Danke vielmals

lg,

Stefan

Autor: Stefan_h (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

Habe sprintf getestet, bei der verwendung ist mir folgender Fehler 
aufgefallen:
Wenn man sprintf(); immerwieder anwendet( auf selbe Zeichenkette) wird 
die Zeichenkette nicht neu geschrieben, sondern die neue Zeichenkette an 
die alte drangehängt:

z.B.:

char sHelp[10];
int i;
for(i=0;i<10;i++)
  sprintf(sHelp,"%i",i);

da steht dan Folgendes im String: sHelp={0123456789}

wenn man nun aber in der routine nach den Variabln *buf='\0' einfügt 
wird der alte String immer neu geschrieben.

Ich hoffe du weißt as ich mein.

lg,

Stefan

Autor: Jonas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
in der sprintf funktion ist ein fehler! statt strcat müsste es strcpy 
heißen.

Autor: BjörnP (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn du nur eine Ziffer in einen char umwandeln willst, kannst du auch 
einfach '0' hinzuaddieren.
int i  = ???;
char c = i + '0';

Björn

Autor: Stefan_h (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
kann sein, sprintf() nicht bei jedem Controller geht? Habe bei einem 
90l8535 kein Problem, aber beim mega103L geht nichts, der string is 
leer.

lg,

Stefan

Autor: Steffen Z. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Jonas

Zu dem Fehler in sprintf:
Muss ich beide strcat in strcpy umwandeln oder nur eines, habs nämlich 
mal probiert (mit beiden) hat aber irgendwie nicht hingehauen...
Kannst Du mich mal kurz aufklären?
Danke

Gruß
Steffen

Autor: Andreas Schwarz (andreas) (Admin) Benutzerseite Flattr this
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nix strcpy, strcat ist schon richtig. Warum der Code nicht funktioniert 
hat kann ich jetzt auch Anhieb so nicht sagen, bei mir ging es 
jedenfalls. Aber ein paar andere Bugs sind mir auch irgendwann mal 
aufgefallen.
Schreib doch mal ein eigenes sprintf, ist eine schöne Übung :-)
Oder befrag google nach "sprintf implementation", du solltest 
haufenweise sprintf-Funktionen finden. Vielleicht musst du sie auch erst 
ein wenig kürzen damit das in einen kleinen AVR passt...

Gruß
Andreas

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.