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