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

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.