mikrocontroller.net

Forum: Compiler & IDEs String mit char "füllen"


Autor: Der Techniker (_techniker_)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi!

Ich hole mir aus einer MMC einen fixen Text, den ich noch mit Zeichen
und Zahlen füllen muß.

Nach dem laden aus der MMC habe ich z.B. eine String-Variable text mit
dem Inhalt "Dies ist der xxx. Durchlauf". Zusätzlich habe ich noch
die Variable i, die aktuell z.B. die Zahl 13 (kein String!) enthält.

Wie kann ich nun die "xxx" mit dem String (!) aus der Zahl 13
füllen?

Im Endeffekt soll dann hald "Dies ist der x13. Durchlauf" als Inhalt
der String-Variable text rauskommen!

Hab schon ein bischen rumprobiert und gelesen, finde aber nichts
passendes... Bräuchte was wie printf, nur als Ziel hald eine
Stringvariable anstatt einer Ausgabe.

Im Vorraus schonmal herzlichen dank!

Autor: Μαtthias W. (matthias) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

für deinen speziellen Fall, ohne Überprüfungen auf Fehler, mit fixem
Offset zum Stringanfang und mit löschen der 'x':

sprintf(text+13,"%3d",i);

Matthias

Autor: Der Techniker (_techniker_)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Irgendwie hat das bei mir nicht hin... :-(

Probieren wir es mal (testweise, zum verstehen) andersrum:

Ich habe folgenden Code:

------------------
unsigned char i, text[50];
for(i=0; i<8; i++)
{
 text = strcat( text, "Dies ist der xxx. Durchlauf" );
 .....
 uart_puts(text);
}
------------------

Was muß ich in die Zeile mit den Punkten schreiben, dass die xxx durch
z.B. <leerzeichen> <leerzeichen> <inhalt_von_i> aufgefüllt werden?

Dazu möchte ich noch hinzufügen, dass angenommen werden soll dass die
Position der xxx nicht fix ist! (Bräuchte hald sowas wie printf)

Anstelle der xxx kann ich natürlich im vornherein schon z.B. "%3d"
oder so vorgeben, wenn dies was bringen sollte... ;)


Ich steh noch ein bischen auf Kriegsfuss mit Arrays, Strings und
Pointern.. ;)

Danke für eure hilfe!

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

Bewertung
0 lesenswert
nicht lesenswert
> Hab schon ein bischen rumprobiert und gelesen, finde aber nichts
> passendes... Bräuchte was wie printf, nur als Ziel hald eine
> Stringvariable anstatt einer Ausgabe.

Wie von Matthias schon gesagt:

Wenn Du 'so was wie printf' brauchst, 'nur halt mit einer
Stringvariable (einem character Array) als Ziel', dann
gibt es sowas fertig:

sprintf

Doku lesen!

Autor: flyingwolf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
unsigned char i, text[50];
for(i=0; i<8; i++)
{
 sprintf(text,"Dies ist der %3d. Durchlauf" , i);
 uart_puts(text);
}

Autor: Der Techniker (_techniker_)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
:-D

DANKE!!!

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.