Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Dynamischer Speicher für Zeichenketten in C (war: Hillfe Aufgabe)

Empfohlene Antworten

Veröffentlicht

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 ??????*/

}

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

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

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

Danke für die Hilfe, nur noch

am Ende soll ich die Zeiger frei zu geben:

free(array);

// oder durch

for (int i=0; i < 10; i++){

free(array);

}

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

}

}

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.