strcat um an array anzuhängen??

Gast #436255
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???

#436282
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 */
    ;
Gast #439075
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????
#439333
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren