Forum: Compiler & IDEs Int in string


von Stefan_h (Gast)


Lesenswert?

Hi,

Wie wnadle ich ein iteger in einen string um??

lg,

Stefan

von Andreas S. (andreas) (Admin) Benutzerseite


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


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


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

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.