mikrocontroller.net

Forum: Compiler & IDEs int to string


Autor: bst (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe z.B. ein char vorliegen, das den Wert 32 enthält.
Wie kann ich daraus einen string erhalten, der '3' und '2' enthält?

Autor: markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
welche programmierspache?

Autor: Noonien (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn C oder C++ dann:

int i = 100;
char* str = Printf("%d", i) //"%d" steht für die variable es ist auch 
"nummer: %d" und so weiter möglich

Autor: bst (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das heißt, ich könnte auch sprintf(str, "%d", i) verwenden?
Ich bin mir jetzt nicht sicher, ob es den Zahlenwert (32) nimmt, oder 
das ASCII-Zeichen hinter dem sich 32 verbirgt.

Autor: Noonien (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sorry, natürlich

char str[100];
sprintf (str, "%d", i);

ich bin so CString versaut ^^

Autor: Noonien (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der formatiert die Variablen in normale ascii zeichen... also wird die 
int variable {32} zu "32"

es gibt auch andere zeichen anstatt "%d" (für ganze zahlen)... zB "%f" 
für nachkommazahlen.

Autor: johnny.m (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Der formatiert die Variablen in normale ascii zeichen... also wird die
> int variable {32} zu "32"
...wobei darauf zu achten ist, dass zu einem ASCII-String grundsätzlich 
noch der Nullterminator am Ende gehört, der von allen Funktionen, die 
eine Konvertierung in ASCII durchführen (also die printf-Derivate aus 
der stdio.h und die stdlib.h-Funktionen itoa, dtostrf, dtostre,...) 
erzeugt und auch gespeichert wird! Deshalb muss das Array, in dem man 
den String ablegt, mindestens eine Stelle mehr haben, als man maximal 
ausgeben will, sonst läufts über.

Autor: Daniel M. (usul27)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ähm, sprintf geht zwar, produziert aber recht viel Overhead. Für etwas 
so triviales nimmt man lieber itoa()

Autor: bst (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie wird der String eigentlich von sprintf in den Buffer (str) 
geschrieben?

Bsp.:
char str[25];
sprintf(str, "%d", 123);

Steht dann an Arrayindex 24 die "1", an Index 23 die "2", an Index 22 
die "3" und an Index 21 das "\0"?

Autor: Daniel M. (usul27)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wieso sollte er das Array von hinten auffüllen (mal abgesehen davon, 
dass sprintf nicht mal weiss, wie gross das Array ist). Der String wird 
natürlich von unten (also ab str[0]) gefüllt.

Autor: bst (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Stimmt, es steht also genau umgekehrt im Array schäm

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.