Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » c++ Text in Struckt speichern

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
23.05.2018, 21:02 Uhr
asdf453



Liebes Forum,

Das Programm soll eine ganze Zahl n>=6 einlesen, und anschließend n Texte in einer Strucktur speichern und ausgeben. Bei der Ausgabe sollen die Texte einemal In der Form wie sie einegegeben wurden und einemal die ersten 3 und letzten 3 vertauscht ausgegeben werden.

Die Strucktur soll so aussehen:


C++:
struct TextBlock
{
char * Text;
size_t Laenge;
};



Ich habe bisher:


C++:
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <iomanip>
using namespace std;

int main(int argc, char* argv[])
{
    
unsigned int count = 0;
std::cin >> count;
int TextFeld  ** array = new  TextFeld*[count];

if(array == nullptr) return -1;

for(size_t i = 0; i < count; ++i)
{
    array = new TextFeld();
    char* tmp = nullptr;
    scanf("%ms[^\n]", &tmp);
    array->text = tmp;
    array->len = strlen(tmp);
}

for(size_t i = 0; i < count; ++i)
    {
    std::cout << std::setw(5) << array->len << ": " << array->text << std::endl;
    }

    for(size_t i = 0; i < count; ++i) delete array;
    delete[] array;
}

struct TextFeldMod : public TextFeld {
    TextFeldMod() { text = nullptr; len = 0; }
    ~TextFeldMod() { free(text); }
};



Das Programm läuft nicht. Ich bin mir nicht sicher wie ich die Variablen richtig deklariere. z.b. TextFeld. Ich bin mit meinem Wissem am Ende angelangt. Der Umgang mit Pointern, Struckturen und das allokieren von Speicher mittels new ist neu für mich. Das praktische anwenden fällt mir noch schwer.

Bin für jeden Lösungsvorschlag oder Hilfe sehr Dankbar!

Dieser Post wurde am 23.05.2018 um 21:35 Uhr von FloSoft editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
24.05.2018, 10:07 Uhr
ao

(Operator)


Ist das ne Hausaufgabe? Oder ne Übungsaufgabe, die du dir selber ausgesucht hast?

Ich frage deshalb, weil der Code eine Mischung aus C und C++ ist, die man eigentlich schnellstens vergessen sollte. C++ hat std::string, um Text zu speichern und std::vector (und etliche andere Container), um mit größeren Mengen gleichartiger Daten umzugehen. Das funktioniert wunderbar und erspart viel Rumschlagen mit kaputtem Speicher.

Selbstverwaltete char-Pointer sollte man nicht mehr benutzen und sich das lieber gleich richtig angewöhnen.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
24.05.2018, 11:53 Uhr
asdf453



Danke für die schnelle Antwort.
Ja das ist eine Hausaufgabe.
Das verwenden von c++ strings ist nicht erlaubt.
Und malloc darf nicht verwendet werden (new darf man)
Leider...

Dieser Post wurde am 24.05.2018 um 11:58 Uhr von asdf453 editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
24.05.2018, 12:35 Uhr
ao

(Operator)


Du armer. Wieder so ein Lehrer, der sich einbildet, er lehrt C++.

Die Antwort auf die Frage ist etwas komplizierter, weil du eine ganze Reihe von Fehlern machst. Geht nicht auf die Schnelle. Etwas Geduld bitte.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: