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 De fnition 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 de niert,
    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.


Anmelden zum Antworten