Forum: Compiler & IDEs Int in string


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Stefan_h (Gast)


Lesenswert?

Hi,

Wie wnadle ich ein iteger in einen string um??

lg,

Stefan

von Andreas S. (andreas) (Admin) Benutzerseite Flattr this


Lesenswert?

itoa() oder sprintf()

von Stefan_H (Gast)


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

von Andreas S. (andreas) (Admin) Benutzerseite Flattr this


Lesenswert?

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

von Stefan_h (Gast)


Lesenswert?

Hi,

Danke vielmals

lg,

Stefan

von Stefan_h (Gast)


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

von Jonas (Gast)


Lesenswert?

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

von BjörnP (Gast)


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

von Stefan_h (Gast)


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

von Steffen Z. (Gast)


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

von Andreas S. (andreas) (Admin) Benutzerseite Flattr this


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]
  • [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.