Hallo erstmal.
Bin am verzweifeln. Wir haben als Aufgabe bekommen vom stdin Wörter einzulesen und diese in einem dynamischen Array zu speichern. Habe zwei Pointer gemacht. Der eine zeigt auf den gelesene Text und der ander wiederum auf diesen Pointer. Hier mal der Code:
Irgendwas läuft da nicht rund. Versuche schon ewig, komme aber nicht drauf. Jemand einen Tipp?![Wink ;) ;)](https://cdn.jsdelivr.net/joypixels/assets/8.0/png/unicode/64/1f609.png)
Bin am verzweifeln. Wir haben als Aufgabe bekommen vom stdin Wörter einzulesen und diese in einem dynamischen Array zu speichern. Habe zwei Pointer gemacht. Der eine zeigt auf den gelesene Text und der ander wiederum auf diesen Pointer. Hier mal der Code:
Code:
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <string.h>
#define MAX 101
#define IN stdin
int main (void) {
char *buffer; /*Buffer zum einlesen*/
char **buff_a = NULL; /* Buffer Array für Woerter*/
printf("Bitte Woerter eingeben :\n");
int index = 0; /* Index für Array*/
/* Solange kein EOF */
while ((fgets(buffer, MAX, IN)) != NULL) {
/* Speicher anfordern */
buff_a = (char **) realloc(buff_a, sizeof(char *)*(index+1)); /*Für Array Pointer holen*/
/* Fehler? */
if (buff_a == NULL) {
printf("Kein Speicher");
return EXIT_FAILURE;
}
/* OK! */
else {
buffer = (char*) malloc(sizeof(char*)*(strlen(buffer)+1));
/* Fehler? */
if (buffer == NULL) {
printf("Kein Speicher");
return EXIT_FAILURE;
}
/* OK! */
else {
/* Falsche Eingaben abfangen */
if (strlen(buffer) == 1) {
free(buffer);
continue;
}
else if ((strlen(buffer) > MAX) && (buffer[strlen(buffer)-1] != '\n')) {
char c = getchar();
while (c != '\n') {
free(buffer);
continue;
}
}
buff_a[index] = buffer;
strcpy(buff_a[index], buffer);
free(buffer);
index++;
}
}
}
return 0;
}
Irgendwas läuft da nicht rund. Versuche schon ewig, komme aber nicht drauf. Jemand einen Tipp?
![Wink ;) ;)](https://cdn.jsdelivr.net/joypixels/assets/8.0/png/unicode/64/1f609.png)