Dynamischer Speicher
-
Hallo zusammen,
ich habe eine Aufgabe bekommen, nur leider weiß ich nicht genau was ich tun soll. Habe schon ein Teilprogramm erstellt.
Meint ihr das ist richtig so? Ich bin noch ein Anfänger was C Programmieren betrifft und hoffe auf eure Hilfe.Danke
3.1
Geben Sie das Codefragment zur Defnition eines statisch alloziertes Feldes an, das aus
100 To-Do Einträge besteht.3.2
Programmieren Sie ein kurzes Demo-Programm, das das Feld zunäachst in einen de-
nierten Anfangszustand bringt. Dann ermoglichen Sie, dass der Benutzer einen oder
mehrere Eintrage machen kann, indem er jeweils einen Text eingibt. Ihr Programm soll
selbstandig einen Eintrag an eine freie Stelle im Feld kopieren, es darf nicht davon ausgehen,
dass das Feld vor der Interaktion leer ist (in Zukunft soll es moglich sein, solche
Merkzettel von der Festplatte zu laden). Ermoglichen Sie weiterhin, dass im Anschlu
an die Eingaben die vorhandenen Einträge im Feld ausgegeben werden.3.3
Manchmal sind die Beschreibungen der einzelnen Aufgaben knapp, manchmal sehr lang.
Geben Sie nun ein Codefragment an, das (anlehnend an Aufg. 3.1) eine Struktur deniert,
die eine feste Zahl Einträge mit dynamisch anzugebender Länge zuläßt!3.4
Geben Sie nun eine Variante des Programms aus Aufg. 3.2 an, das mit dem Feld gemäß
Aufg. 3.3 arbeitet! Bereichnen Sie, wieviel dynamischen Speicher Sie insgesamt anfordert
werden haben und raumen Sie am Ende des Programmes den Speicher wieder auf!# include <stdio.h> #include <stdlib.h> #include <string.h> #define MAXLENGTH 80 #define ANZAHLINFOS 100 int main() { int i; char eingabe[MAXLENGTH]; char* wissensspeicher [ANZAHLINFOS]; for( i= 0; i<ANZAHLINFOS; i++) { wissensspeicher[i] = 0; } printf("Bitte geben sie ihre Info ein:\n"); fgets(eingabe, MAXLENGTH, stdin); printf("Ihre Info ist %d Bytes lang\n", strlen(eingabe)); String ablegen wollen, + 1 für das '\0' Byte wissensspeicher[0] = (char*) malloc( (strlen( eingabe)+1) * sizeof(char) ); if (wissensspeicher[0] ==0) { printf("Out of memory.\n"); exit(-1); } strcpy(wissensspeicher[0], eingabe); printf("Eintrag 0: \n %s \n", wissensspeicher[0]); free(wissensspeicher[0]); }
-
3.1+3.2 hast du ja schon fertig und jetzt das Ganze nochmal in eine Struktur packen?!
Ich sehe den Sinn nicht. Der Code sähe genauso aus, bloß dass du jetzt mit einer Struktur (oder Struktur-Array?!) arbeitest.
Die kastastrophale Ausdrucksweise in der Aufgabenstellung verhindert eine eindeutige konkrete Codelösung.