Probleme mit malloc und realloc bei Pointer Array

dasie

Grünschnabel
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:

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? ;)
 
ich hätte ja gedacht, dass "buffer" durch das "(fgets(buffer, MAX, IN)"
auf die Eingabe in stdin zeigt! Oder nicht?
 
AH Dann verstehe ich schon. Vorher speicher holen und die while-SChleife umschreiben. Vielen Dank! gruß, dasie
 
Zurück