Speicher allokieren - Strings ausgeben

Gast #1803575
Lesenswert?

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
}
#1803592
Lesenswert?

Du hast dich verschrieben:
1
 cout << "Geben Sie bitte den zweiten String ein: " << endl;
2
  fgets(puffer2,MAX_LENGTH,stdin);
3
  dyn_string2 = new char[strlen(puffer2)+1];
4

5
  cout << "Geben Sie bitte den zweiten String ein: " << endl;
6
  fgets(puffer2,MAX_LENGTH,stdin);
7
  dyn_string3 = new char[strlen(puffer3)+1];

Im zweiten Abschnitt muss beim fgets natürlich auch eine 3 stehen

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