Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

Es geht um eine Aufgabe aus der Schulle, die ich leider nicht lösen kann. Bitte weist jemand wie ich sie lösen kann ??

Schreiben Sie ein C-Programm, das in einem Array von Zeigern auf „char“ maximal 10 Zeichenketten verwaltet. Der Speicher für jede Zeichenkette im Array soll dynamisch angefordert werden. Geben Sie nach erfolgter Eingabe alle Zeichenketten aus sowie die Gesamtanzahl eingegebener Zeichen.

#include <stdio.h>

#include <malloc.h>

#include <string.h>

void main()

{

char *array[10];

char temp[80];

/*Code ??????*/

}

Geschrieben

hallo,

ich glaube nicht das dir hier jemand deine Hausaufgabe komplett lösen wird, denn du sollst ja schließlich was daraus lernen. Wo liegt denn genau dein Problem? Weißt du nicht wie man Speicher dynamisch allokiert unter C? Weißt du nicht wie du die Eingabe realisieren sollst? Schau dir die Dokumentationen der Funktionen malloc() realloc() und getch() und vielleicht auch scanf() (allerdings für diese Aufgabe nicht unbedingt zu empfehlen) an vielleicht hilft dir das schon.

(/edit: google.de ist dein freund ;) )

gruss

mep

Geschrieben

mein problem ist, wie ich von

char * array[10]; und

char temp[80];

ein zweidimensionales feld realisieren kann. Nur so kann ich 10 Einträge speichern? Das ist was ich nicht verstehe

Geschrieben

naja du musst eben nachsehen wieviele zeichen eingegeben wurden und dann für jede Eingabe den nächsten der 10 Zeiger mit den Daten füllen.

Also zum Beispiel:


for(int n = 0; n < 10; n++)

{


    // [Eingabe vom User fordern und in temp speichern zum Beispiel mit scanf wenn du mit einer festen Breite arbeiten darfst]


    array[n] = (char*)malloc(strlen(temp) + 1); // +1 wegen terminierender null in   c-strings


    strcpy(array[n], temp);

}

(nicht getestet aber sollte klappen)

Hoffe das hilft dir weiter.

Gruss

mep

Geschrieben

Für jedes malloc muss prinzipiell ein free gemacht werden ;) sonst bekommst du sehr hässliche memory-leaks (Speicher der per malloc angefordert wurde aber nicht mehr freigegeben wurde durch free).

gruss

mep

Geschrieben

Danke für alles, ich möchte schliesslich das Programm presentieren. :marine

/* === Aufgabelösung === */

#include <stdio.h>

#include <malloc.h>

#include <string.h>

void main(){

char *array[10];

char temp[80];

int kette = 0;

int anzahl =0;

int gesamt =0;

// 10 Array-s schaffen

while(kette < 10){

printf("String eingeben (max 79 Zeichen)\n->");

gets(temp);

array[kette] = (char *) malloc(sizeof(temp) + 1);

strcpy(array[kette],temp);

kette++;

}

for(kette = 0; kette < 10; kette++)

{

strcpy(temp,array[kette]);

// Anzahl suchen

while (temp[anzahl] != '\0' )

{

anzahl++;

}

// Ausgabe alle Zeichenketten

printf("array[%i] %s \t = %i Zeichen\n",kette,array[kette], anzahl);

gesamt += anzahl;

anzahl=0;

}

printf("\nGesamt sind in %i Zeichenketten %i Zeichen\n", kette, gesamt);

// Zeiger freigeben

for(kette =0; kette<10;kette++){

free(array[kette]);

}

}

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
Auf dieses Thema antworten...

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