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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.