Strings mit char verknüpfen

Gast #569076
Lesenswert?

Hallo,

ich möchte gerne zwei char-Werte an einen sechselementigen String 
hängen, bei dem ich zuvor aber das letzte Element lösche. Am Ende soll 
der String also sieben Elemente haben. Ich fange gerade erst mit 
Pointern, etc. an und stehe gerade etwas auf dem Schlauch.

Vielleicht kann mir ja jemand helfen.

Daniel
#569096
Lesenswert?

Daniel wrote:
> Hallo,
>
> ich möchte gerne zwei char-Werte an einen sechselementigen String
> hängen, bei dem ich zuvor aber das letzte Element lösche. Am Ende soll
> der String also sieben Elemente haben. Ich fange gerade erst mit
> Pointern, etc. an und stehe gerade etwas auf dem Schlauch.
>
> Vielleicht kann mir ja jemand helfen.

Dazu brauchst du keine Pointer.
1
char Zeichen1 = 'a';
2
char Zeichen2 = 'b';
3

4
char Result[8];   // muss mindestens die Laenge 8 haben:
5
                  // 7 Zeichen + '\0'
6

7
   strcpy( Result, "012345" );   // deine 6 Zeichen
8

9
   Result[5] = Zeichen1;
10
   Result[6] = Zeichen2;
11
   Result[7] = '\0';

Es muss aber scihergestellt sein, dass da auch wirklich
6 Zeichen als Vorgabe im String waren. 5 wuerden auch
noch gehen. Wenns aber nur 4 waren, wird obiges nicht
funktionieren.
Wenn die 6 Zeichen als 'bis zu 6 Zeichen' zu lesen sind,
dann muesste man eine andere Strategie anwenden:
1
char Zeichen1 = 'a';
2
char Zeichen2 = 'b';
3

4
char Result[8];
5

6
  strcpy( Result, "012" );    // deine Vorgabe. Hier soll passieren:
7
                              // das letzte Zeichen weg und dafür
8
                              // Zeichen1 und Zeichen2 hinten dran
9

10
  // erst mal feststellen, wieviele Zeichen in der Vorgabe sind
11
  int i = strlen( Result );   // im obigen Beispiel sind es 3
12

13
  if( i > 0 ) {               // das vorlezte Zeichen kann natürlich
14
                              // nur dann geloescht werden, wenn es auch
15
                              // mindestens 1 Zeichen gibt
16
    Result[i-1] = Zeichen1;
17
    Result[i]   = Zeichen2;
18
    Result[i+1] = '\0';
19
  }
20
  else {
21
    Result[i]   = Zeichen1;
22
    Result[i+1] = Zeichen2;
23
    Result[i+2] = '\0';
24
  }

den letzten Abschnit könnte man auch eleganter schreiben
1
  if( i == 0 ) {              // das vorlezte Zeichen kann natürlich
2
                              // nur dann geloescht werden, wenn es auch
3
                              // mindestens 1 Zeichen gibt
4
    i = 1;
5
  }
6

7
  Result[i-1] = Zeichen1;
8
  Result[i]   = Zeichen2;
9
  Result[i+1] = '\0';

Wenn man unbedingt möchte könnte man auch mit str... Funktionen
ran gehen:
1
char tmp[3];
2

3
  tmp[0] = Zeichen1;
4
  tmp[1] = Zeichen2;
5
  tmp[2] = '\0';
6

7
  i = strlen( Result );
8

9
  if( i == 0 ) {              // das vorlezte Zeichen kann natürlich
10
                              // nur dann geloescht werden, wenn es auch
11
                              // mindestens 1 Zeichen gibt
12
    i = 1;
13
  }
14

15
  strcpy( &Result[i-1], tmp );

  

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