Zum Inhalt springen
  • 0

c++ Text in Struckt speichern


asdf234

Frage

Liebes Forum,

Das Programm soll eine ganze Zahl n einlesen, und anschließend n Text in einer Strucktur speichern und ausgeben. In der Form:

struct TextBlock
{
char * Text;
size_t Laenge;
};

Ich habe bisher:

#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.

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

5 Antworten auf diese Frage

Empfohlene Beiträge

  • 0
int TextFeld  ** array = new  TextFeld*[count];

Was genau soll diese Zeile denn machen? Ein Array aus Textfeldern? Wenn ja, was macht das int da? Und woher soll der Compiler wissen, was ein Textfeld ist? Ist das irgednwo definiert?

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 0
vor 34 Minuten schrieb asdf234:

Danke für die Antwort.

Ja das soll ein Array aus Textfeldern sein. Das das Int einBlödsinn ist sehe ich ein. Ich weis eben nicht wie ich "TextFeld" definiere.

Okay, d.h. da soll am Ende der eingelesene Text drin stehen, sehe ich das richtig? Oder soll es das struct sein? Die Vorgabe ist ja, dass der Text und die Länge in einem Struct gespeichert werden soll, d.h. du brauchst ein Struct (welches du ja nirgendwo angelegt hast). Und schau dir in deinen Unterlagen nochmal an wie man Text speichert

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 0

Schreiben Sie ein Programm, das einen positiven ganzzahligen Wert n ≥ 6 einliest. 
Anschließend reservieren Sie Speicher für ein Array TextSammlung von n Pointern auf die 
folgende Datenstruktur:

struct TextBlock
{
char * Text;
size_t Laenge;
};

Lesen Sie nun n Texte beliebiger Längen ein (Leerzeichen in den Texten sollen erlaubt sein), 
und befüllen Sie die Datenstruktur entsprechend mit dem Text und seiner Länge. Geben 
Sie dann jeden Text und seine Länge mit cout übersichtlich formatiert aus. Vertauschen Sie 
im Anschluss die ersten 3 mit den letzten 3 Texten mit Hilfe einer geeigneten Funktion.
Randbedingungen: 
1) Die Verwendung der C++-Klasse string ist nicht erlaubt.
2) Verwenden Sie nur new zur Speicherallokation, nicht malloc()!
3) Vertauschen heißt nicht Kopieren...

Das ist die komplette Angabe.

Meine Unterlagen sind leider nicht besonders gut. 

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 0

Zuerst musst du rausfinden (Google, deine Unterlagen, die Unterlagen der Kollegen, etc) wie man eine Ganzzahl einliest.

Dann schau wie man ein struct anlegt, und Speicher für ein Array (in dem Fall ein Array von den structs) reserviert.

Dann schau wie man Text einließt. (Tipp: Da du kein String benutzen darfst nimm char*, ist ja in dem struct schon so angegeben). Dann speicher den Text + Länge in dem struct. Das ganze für jedes struct im Array.

Dann nurnoch ausgeben und vertauschen

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Diese Frage beantworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...