Forum: Compiler & IDEs strcat um an array anzuhängen??


von Martin (Gast)


Lesenswert?

Hi

kann ich strcat(buffer,byte) nehmen um in einem Array[100] ein wert 
anzuhängen.


bsp:

unsigned char Array[100];

Inhalt von array=0;1;2;3;7 usw. Speicher Pages.
ich lese den letzten wert von array+1 um auf eine neue speicher Page 
zuzugreifen.
nachdem will ich die neue Page an das array anhängen.
unsigned char byte;

kann ich das mit strcat machen???


von Peter D. (peda)


Lesenswert?

str***() Funktionen funktionieren, wie der Name schon vermuten läßt, nur 
auf Strings.

D.h. sie benötigen immer die abschließende 0 und erlauben keine 0 
mittendrin.


Peter

von Karl H. (kbuchegg)


Lesenswert?

Ausserdem ist strcat etwas überkandidelt um ein einzelnes
Byte anzuhängen.
Du kennst doch den Array Index des letzten, in Array benutzen
Bytes. Warum weist du nicht einfach dorthin zu und erhöhst
den Belegtzähler?

unsigned char PageCount;
unsigned char Pages[100];

 ....

 /* Pages enthält zb. 0, 2, 5, 6
    PageCount ist daher 4
 */

  if( PageCount < 100 )
    Pages[PageCount++] = 8;   /* neue Page hinzufügen */
  else
    /* Fehler: Page Tabelle ist voll */
    ;

von Martin (Gast)


Lesenswert?

Ja mit den Pages das geht so aber wie kann ich nur einzelne texte 
ranhängen


ich habe ja 528byte pro page.

ich  lese immer nur 38 byte ein und muß diese an den Buffer hängen der 
dann wenn 528 Byte drinn sind an die page die werte übergibt.


char texte[39];
char buffer[529];

if(geschrieben<528)
{
//texte an buffer anhängen mit ?????strcat????
}


wie kann ich den text an den buffer anhängen????
mit strcat oder????
wo muß die null stehen????

von Karl H. (kbuchegg)


Lesenswert?

> wie kann ich den text an den buffer anhängen????
> mit strcat oder????

Ja. Ist eine Möglichkeit

> wo muß die null stehen????

Die '\0' steht immer nach dem letzten gültigen Zeichen
im Array.

Wenn also das Buffer Array am Anfang kein Zeichen
enthält, dann ust Buffer[0] == '0'

Willst do dort den Text "Ma" anhängen, dann machst
du

   strcat( Buffer, "Ma" );   // Oder für "Ma" ein anderes Array,
                             // das den String "Ma" enthält

Buffer sieht dann so aus

   +---+---+---+---+---+---+---+- ... -+---+---+
   | M | a |\0 |   |   |   |   |       |   |   |
   +---+---+---+---+---+---+---+- ... -+---+---+

so jetzt hängen wir noch "rt" dran

  strcat( Buffer, "rt" );

   +---+---+---+---+---+---+---+- ... -+---+---+
   | M | a | r | t |\0 |   |   |       |   |   |
   +---+---+---+---+---+---+---+- ... -+---+---+

und zum Schluss

  strcat( Buffer, "in" );

   +---+---+---+---+---+---+---+- ... -+---+---+
   | M | a | r | t | i | n |\0 |       |   |   |
   +---+---+---+---+---+---+---+- ... -+---+---+

Das einzige worauf du aufpassen musst ist, dass das
Endergebnis nie länger wird als der Buffer fassen
kann (die abschliessende '\0' nicht vergessen).

Wenn du selbst nicht dafür sorge tragen kannst, willst
oder musst, dann lieber strncat anstatt strcat verwenden.


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.