Hilfe beim Hausübung Strings

bimdot

Grünschnabel
Hallo Leute, kann jemand mir dabei helfen wie ich des machen kann ?

mrft4k.png
 
Hi

Kannst du bitte Text posten, nicht unscharfe Bilder?
Hast du schon was probiert, wo kommst du nicht weiter?
 
Hallo

Hallo Leute, kann jemand mir dabei helfen wie ich des machen kann ?
Welcher Teil davon?

Die Aufgabe gruppiert sich in 2 Teile:
  1. Das Command Line Interface und
  2. das Speichern (und umkehren) der gespeicherten Daten.

Zu 1 nehme ich mal an, dass ihr das schon gehabt habt. Ansonsten nochmals nachfragen.

Zu 2:
Die einfachste Variante: Speichere die Grösse der eingebenen Daten (die Länge). Bei jedem Tastendruck kannst du dann mittels realloc einen grössen Bereich vom System erbitten. Als Anfang biete ich dir mal das an:

C++:
int c = 0;
size_t memsize = 0;
char* data = NULL; //Falls C++11: nullptr
while((c=getc(stdin)) != EOF)
{
    memsize++;
    char* tmp = (char*)realloc(data, memsize);
    if(tmp == NULL) //Oder nullptr
    {
        printf("Error... usw und so fort");
    }
    else
        data = tmp; //Auf richtigen Pointer setzen

    //c an der richtigen Stelle einfügen
}

//Jetzt ausgeben: Einfach in einem Loop von memsize auf 0 herunterzählen.

//Code

//Am Schluss:
free(data);

Gruss
cwriter
 
Habs des jetzt im text gepostet. Danke cwrite, ja es muss des zweiter sein, weil es man es dann umkehren muss und ich werde dann es mal versuchen das was du gepostet hast diesen code.

Einleitung

Hausübungsbeispiel Nummer fünf behandelt das Thema Speicherverwaltung und Strings.

Aufgabenstellung
Es sollen von der Konsole (stdin) Zeichen eingelesen werden, bis das Ende des Eingabestreams (EOF) erreicht ist. Beim Testen kann man den Stream mit dem Tastenkürzel Strg+D (in Windows Strg+Z) beenden, oder man leitet als Eingabe für das Programm eine Datei auf stdin des Programms um. Das sieht mit der Datei input.txt zum Beispiel so aus:

./hw4 < input.txt

Eingelesen werden soll in einen dynamisch reserviertem Speicher (malloc), der wenn er voll ist vergrößert wird (realloc). Sobald der Eingabestream zu Ende ist, werden die eingelesenen Zeichen rückwärts wieder ausgegeben und mit einem "\n" abgeschlossen.

Im Falle eines Fehlers soll die Fehlermeldung "Error: Out of memory!\n" ausgegeben werden und das Programm mit dem Fehlercode 1 ohne weitere Ausgaben beendet werden.

Beispielaufruf
% ./hw4
Hallo Welt!\n
Jetzt noch ein Zeilenumbruch und dann EOF.\n[EOF]
\n
.FOE nnad dnu hcurbmunelieZ nie hcon tzteJ\n
!tleW ollaH\n
 

Neue Beiträge

Zurück