Auf Thema antworten

so ich hab das problem gelöst in dem ich vorher:

[ICODE]    char c = getchar();[/ICODE]

aufgerufen habe und damit den Puffer leer gemacht habe bzw. das Zeichen "\n" der Variable c zugewiesen habe.


Verstehe ich das nun richtig das mit der Funktion getchar() der lese puffer angezeigt werden kann?


In der Ausgabe hat er mir dann immer noch 2 Leerzeichen gesetzt da muss man dann hinter dem String bei der Ausgabe das \n weg machen da im String das \n zeichen ja schon mit drin ist.

Sieht nun so aus:


[CODE=c]#include <stdio.h>

#include <stdlib.h>

#define MAX 5

#define countof(a) (sizeof(a)/sizeof(a[0]))


typedef struct Mitgliederdatei{

    char name[64];

    int nr;

    int status;

    double gebuehr;

    int anzahl;

} data;


data *eingabe() {

    data *a = (data *) malloc(sizeof(data));

   

    if(a == NULL) {

        printf("Konnte keinen Speicher reservieren!\n");

        exit(EXIT_FAILURE);

    }

    char c = getchar();

    printf("Name: ");

    fgets(a->name, 64, stdin);

   // scanf("%s",a->name);

   

   

    printf("Mitgliedernummer: ");

    do {

        scanf("%7d",&a->nr);

    } while(getchar()!= '\n');

    printf("Status: ");

    do {

        scanf("%d",&a->status);

    } while(getchar()!= '\n');

    printf("Gebuehren: ");

    do {

        scanf("%lf",&a->gebuehr);

    } while(getchar()!= '\n');

    printf("Anzahl: ");

    do {

        scanf("%d",&a->anzahl);  

    } while(getchar()!= '\n');

   

    return a;

}


void ausgabe(data **a, int n) {

    int i;

   

 for(i = 0; i < n; i++) {

        printf("\nAusgabe fuer Element %d:\n", i);

        printf("Name: %s", (*(a + i))->name);

        printf("Mitgliedsnummer: %d\n", (*(a + i))->nr);

        printf("Status: %d\n", (*(a + i))->status);

        printf("Gebuehren: %lf\n", (*(a + i))->gebuehr);

        printf("Anzahl: %d\n", (*(a + i))->anzahl);

    }

}


int main(void) {

   

    int auswahl, n;

    int count = 0;

    printf("Wieviele Plaetze soll das Array haben: ");

    scanf("%d",&n);


    data **mitglieder;

    mitglieder = (data **) malloc(n * sizeof(data*));

   

    if(mitglieder == NULL)

        printf("Fehler");

       

   do {

      printf("-1- Neue Eingabe\n");

      printf("-2- ---\n");

      printf("-3- Alle Adressen ausgeben\n");

      printf("-4- ---\n");

      printf("-5- Programm beenden\n");

      printf("\nIhre Auswahl : ");

      scanf(" %d",&auswahl);


      switch(auswahl) {

         case 1 : mitglieder[count] = eingabe();

                  count++;

                  break;

         case 2 :

                  break;

         case 3 : ausgabe(mitglieder,count);

                  break;

         case 4 :

                  break;

         case 5 : printf("Ende....\n");

                  break;

         default: printf("Falsche Eingabe\n");

      }

   }while(auswahl <5);

   return EXIT_SUCCESS;


}

[/CODE]


Also bringt das alles nix dann muss ich mir hier auch erst einmal die Methoden die es in C schon gibt einmal genauer anschauen :)

Sonst macht man irgendwas und es kommen laufend solche kleine Fehler zu Stande :(


Danke trotzdem mal wieder :)



Oben