Seite 1 von 1

char array um x Byte von links abschneiden

Verfasst: Fr Aug 13, 2021 5:48 pm
von darkwin
Hallo, ich möchte ein char array von links abschneiden.
Das versuche ich mit einem Pointer, das möchte aber nicht wie ich will.

Code: Alles auswählen

#include <stdio.h>
#include <string.h>
 
int main(void)
{
  char   text[] = "Hello proggen.org";
  char * textptr = text;
 
  printf( "Groesse von text   : %lu Bytes / Elemente\n", sizeof( text ));

  // 6 Bytes abschneiden
  text = &textptr - 6;
  printf( "Groesse von text   : %lu Bytes / Elemente\n", sizeof( text ));
  

Re: char array um x Byte von links abschneiden

Verfasst: So Aug 15, 2021 7:36 pm
von nufan
Hallo darkwin,

Der Beginn von Arrays kann nicht verändert werden, diese Zuweisung ist nicht möglich:

Code: Alles auswählen

text = &textptr - 6;
Kompiliert der Code so bei dir?

Stattdessen kannst du deinen Zeiger "textptr" verwenden, um auf einen Bereich innerhalb des Arrays zu verweisen. Du weist ja bereits den Beginn des Arrays zu, du musst nur noch den abzuschneidenden Bereich berücksichtigen. Wenn du vom Beginn etwas abschneiden willst, solltest du die Größe des Bereichs übrigens addieren, nicht subtrahieren :)

Re: char array um x Byte von links abschneiden

Verfasst: Mo Aug 16, 2021 9:31 am
von Xin
Vielleicht noch als Lösung dazu... Ein Array ist immer ein Speicherblock. Du kannst wie nufan beschreibt jetzt einfach behaupten, der Speicherblock fängt 6 Zeichen später ("rechts") an:

Code: Alles auswählen

textptr = &text[6];
printf("ab 6. Position: %s\n", textptr );
oder Du musst den Speicherblock umkopieren:

Code: Alles auswählen

strcpy( text, &text[6] );
printf("ab 6. Position: %s\n", textptr );
-> strcpy

Re: char array um x Byte von links abschneiden

Verfasst: Mo Aug 16, 2021 11:21 am
von darkwin
@nufan
Nein mein Code kompiliert nicht.
Aber genauso habe ich den Code im Netz gefunden wo das Abschneiden eines Strings diskutiert wurde.

Ich habe bisher mit anderen Sprachen Programmiert. Da ist das arbeiten mit Chars / Strings etwas, sagen wir mal, komfortabler.

Mein Projekt soll aber nachher auf einem Arduino funktionieren.
Dann werde ich das auf einem anderen Weg vesuchen.

Xin hat mir ja ein Beispiel gegeben.

Re: char array um x Byte von links abschneiden

Verfasst: Mo Aug 16, 2021 12:29 pm
von Xin
darkwin hat geschrieben:
Mo Aug 16, 2021 11:21 am
Ich habe bisher mit anderen Sprachen Programmiert. Da ist das arbeiten mit Chars / Strings etwas, sagen wir mal, komfortabler.
Komfort muss man sich in C verdienen. :-D
Oder in C++. Ich habe dafür selbstgeschriebene Strings, die das können. Aber das will man häufig ja gar nicht, sondern man will in C/C++ ja die Performance halten. Und den Startpunkt zu verschieben, also einfach 6 Zeichen weiter zu gucken kostet quasi nix. Einen neuen String zu generieren kostet Rechenleistung und Speicher. Komfort muss man sich leisten können.
darkwin hat geschrieben:
Mo Aug 16, 2021 11:21 am
Mein Projekt soll aber nachher auf einem Arduino funktionieren.
Und auf einem Ardiono ist das Budget schmal.