www.mikrocontroller.net

Forum: Compiler & IDEs Problem mit char und uint8_t


Autor: Frank K, (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe ein Problem ein char array mit einen integer zu verbinden.


unsigned char array1[20];

strcpy(array1,"HALLO");

in array ist Hallo soweit so gut.

nun habe ich einen

uint8_t v1 =1;


das ergebnniss soll sein "HALLO1"

wie geht sowas?????


Danke

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
strcpy(array1,"HALLO");
strcat(array1, v1 + '0');

Autor: Martin L. (melvin_the_moose)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
So geht's:
strchr(array1, v1 + '0');

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Man sollte aber noch erwähnen, daß diese Lösung nur für einstellige 
Zahlen funktioniert.

Autor: Frank K, (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

also ich glaube das ist nicht das was ich suche

siehe
http://www.cplusplus.com/reference/clibrary/cstrin...

ich habe es wohl oder übel mit sprintf gelößt.

kostet zwar speicher aber was solls.

Danke

Autor: Martin L. (melvin_the_moose)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hast recht, ich ging nur davon aus, daß
>strcat(array1, v1 + '0');
nicht geht, da strcat als 2. Parameter einen Zeiger auf const char 
erwartet (was v1 + '0' nicht ist). Statt richtig zu lesen, habe ich nur 
in die string.h geschaut, und gesehen, daß strchr dort ein char 
erwartet.
Also eher so:
[...]
strcpy(array1,"HALLO");
strncpy(array1, &v1, 1);

Gruß

Martin

Autor: Martin L. (melvin_the_moose)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nochmal Korrektur (wg. Umwandlung in ASCII...):
strcpy(array1,"HALLO");
v1+='0';
strncpy(array1, &v1, 1);

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Martin

>>strcat(array1, v1 + '0');
>nicht geht, da strcat als 2. Parameter einen Zeiger auf const char
>erwartet (was v1 + '0' nicht ist).

Hmm, hast recht das geht nicht. v1+'0' ist kein String.
So sollte das gehen:

char tmp[2];

tmp[0] = v1 + '0';
tmp[1] = 0;

strcpy(array1,"HALLO");
strcat(array1, tmp);

Autor: Simon K. (simon) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Martin L. das fuktioniert immernoch nur mit einstelligen Zahlen. Und wie 
Frank bereits schrieb ist es nicht das, was er sucht.

sprintf ist die eine Möglichkeit. Eine zweite wäre:
  char String[20];
  int Value = 24;
  strcpy(String, "HALLO");
  itoa(Value, String + strlen(String), 10);

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.