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]);

}

}

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

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