#include <stdio.h>
#include <stdlib.h>
#ifdef __cplusplus
#error ich bin ein depp
#endif

typedef struct
{
  char beschreibung[20];
  long int nummer;
  int bedarf;
} Geraet;

int main()
{
  Geraet *liste=0;
  int i=0;
  while(liste=realloc(liste,++i*sizeof*liste))
  {
    printf("\n%33s"," - Bezeichung <Ende mit \"0\">: ");
    scanf("%19[^\n]",liste[i-1].beschreibung); while(!feof(stdin)&&!ferror(stdin)&&getchar()!='\n');
    if(liste[i-1].beschreibung[0]=='0') break;
    printf("%21s","- Geräte_Nummer: ");
    if( 1!=scanf("%ld",&liste[i-1].nummer) ) break; while(!feof(stdin)&&!ferror(stdin)&&getchar()!='\n');
    printf("%14s","- Bedarf: ");
    if( 1!=scanf("%d",&liste[i-1].bedarf) ) break; while(!feof(stdin)&&!ferror(stdin)&&getchar()!='\n');
  }
  --i;
  while(i--)
    printf("\n%3d%19s%7li%5i",i+1,liste[i].beschreibung,liste[i].nummer,liste[i].bedarf);
  free(liste);
  return 0;
}
