Hallo liebe Leute!
Ich habe folgendes Problem:
Ich möchte ein Programm schreiben, welches 3 Strings nacheinander vom
Benutzer entgegennimmt. Anschließend soll es je nach Länge der
eingegebenen Strings Speicher allokieren (mittels 'new()'). Leider
klappt die Ausgabe der Strings nicht.
Den ersten String gibt er richtig aus. Anstelle des 2. Strings liefert
er mir den dritten. Anstelle des 3. Strings irgendwelche ASCII-Zeichen,
die nie eingegeben wurden.
Ich hoffe ihr könnt mir helfen!
Vielen Dank!
1 | #include <iostream>
|
2 | #include <stdio.h>
|
3 | #include <stdlib.h>
|
4 | #include <string.h>
|
5 |
|
6 | #define MAX_LENGTH 70
|
7 |
|
8 | using namespace std;
|
9 |
|
10 |
|
11 | int main (void)
|
12 | {
|
13 | char puffer1[MAX_LENGTH],puffer2[MAX_LENGTH],puffer3[MAX_LENGTH];
|
14 | char *dyn_string1, *dyn_string2, *dyn_string3;
|
15 |
|
16 |
|
17 |
|
18 | cout << "Geben Sie bitte den ersten String ein: " << endl;
|
19 | fgets(puffer1,MAX_LENGTH,stdin);
|
20 | dyn_string1 = new char[strlen(puffer1)+1];
|
21 |
|
22 |
|
23 | cout << "Geben Sie bitte den zweiten String ein: " << endl;
|
24 | fgets(puffer2,MAX_LENGTH,stdin);
|
25 | dyn_string2 = new char[strlen(puffer2)+1];
|
26 |
|
27 | cout << "Geben Sie bitte den zweiten String ein: " << endl;
|
28 | fgets(puffer2,MAX_LENGTH,stdin);
|
29 | dyn_string3 = new char[strlen(puffer3)+1];
|
30 |
|
31 |
|
32 | if((*dyn_string1 || *dyn_string2 || *dyn_string3 ) == NULL)
|
33 | {
|
34 | printf("Fehler!");
|
35 | }
|
36 | else
|
37 | {
|
38 |
|
39 | strcpy(dyn_string1,puffer1);
|
40 | strcpy(dyn_string2,puffer2);
|
41 | strcpy(dyn_string3,puffer3);
|
42 |
|
43 | cout << "Der erster String lautet:" << endl;
|
44 | printf("%s",dyn_string1);
|
45 |
|
46 | cout << "Der zweiter String lautet:" << endl;
|
47 | printf("%s",dyn_string2);
|
48 |
|
49 | cout << "Der dritter String lautet:" << endl;
|
50 | printf("%s",dyn_string3);
|
51 |
|
52 | }
|
53 |
|
54 |
|
55 | system("pause");
|
56 |
|
57 |
|
58 | }
|