#include <stdio.h>
#include <stdlib.h>

int main(void)
{
	char *dynfeld;
	char eingabe='1';
	int laufindex=0, maximallaenge=10;
  

          
	printf("Mit welcher Maximallaenge von strings wollen Sie arbeiten?\nGeben Sie eine Zahl zwischen 1 und 1000000 ein.\n");
	scanf("%i",&maximallaenge);
	getchar();
    
	if(maximallaenge<1 || maximallaenge>1000000)
	{
		printf("Unzulaessige Eingabe! Programmabbruch!\n\n");
		return(1);
	}
       
      /*Allokierung Speicherplatz*/
      
	dynfeld=(char*)(malloc((maximallaenge+1)*sizeof(char) ));
	if(!dynfeld)
	{
		printf("Speicherplatz kann nicht bereitgestellt werden! Programmabbruch!\n\n");
		return(1);
	}
       
       
     /*Initialisierungsschleife*/
	for(laufindex=0; laufindex<(maximallaenge+1);laufindex++)
	{
		dynfeld[laufindex]=0;
	} 
  
       printf("Dieses Programm liest eine Zeichenkette der Maximallaenge %i ein und gibt sie anschliessend wieder aus.\n\
Geben Sie alle Zeichen nacheinander ein und druecken Sie zum Abschluss die Returntaste.\n",maximallaenge);
 
  /*Eingabeschleife*/
	laufindex=0;
	while(eingabe!=0 && laufindex<(maximallaenge+1))
	{

		scanf("%c",&eingabe);
		 
		if(eingabe==10)
		{
			eingabe=0;
		}
		else
		{
			dynfeld[laufindex]=eingabe;

			laufindex++;
		}
	}
    
	if(laufindex>maximallaenge)
	{
		printf("Sie haben zuviele Zeichen eingegeben.\n\n");
	        /* Ganz wichtig: Zu guter Letzt muss man den allokierten Speicher wieder freigeben! */
		free(dynfeld);
		return(1);
	}
       
     /*Ausgabeschleife*/
     
	printf("Sie hatten die folgende Zeichenkette eingegeben:\n");   
	for(laufindex=0; laufindex<maximallaenge;laufindex++)
	{
		if(dynfeld[laufindex]!=0)
		{
			printf("%c",dynfeld[laufindex]);
		}
	 
       } 
          
   /*Ausgabe des Punktes, um anzuzeigen, dass ggfs kein Zeichen eingegeben wurde.*/    
   /* Abschliessendes line feed zur besseren Plazierung des wieder erscheinenden shell-prompts.*/
	printf(".\n\n");   
    
    
    /* Ganz wichtig: Zu guter Letzt muss man den allokierten Speicher wieder freigeben! */
    
	free(dynfeld);
  
	return(0);
}


