Forum: Compiler & IDEs Problem mit char und uint8_t


von Frank K, (Gast)


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

von holger (Gast)


Lesenswert?

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

von Martin L. (melvin_the_moose)


Lesenswert?

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

von Rolf Magnus (Gast)


Lesenswert?

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

von Frank K, (Gast)


Lesenswert?

Hallo

also ich glaube das ist nicht das was ich suche

siehe
http://www.cplusplus.com/reference/clibrary/cstring/strrchr.html

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

kostet zwar speicher aber was solls.

Danke

von Martin L. (melvin_the_moose)


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

von Martin L. (melvin_the_moose)


Lesenswert?

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

von holger (Gast)


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);

von Simon K. (simon) Benutzerseite


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:
1
  char String[20];
2
  int Value = 24;
3
  strcpy(String, "HALLO");
4
  itoa(Value, String + strlen(String), 10);

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.