Forum: Compiler & IDEs Strings mit char verknüpfen


von Daniel (Gast)


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

von Karl H. (kbuchegg)


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 );

  

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.