problem bei for schleife



  • Hey Leute,
    bin neu hier und komme auch gleich mit meinem ersten Problem zur Sache.
    Bin noch relativer Anfänger und verstehe nicht warum das Programm nicht das macht was es machen soll.
    Ich habe folgenden code:

    #include <stdio.h>

    struct Person
    {
    char Nachname[15];
    char Vorname[15];
    char Wohnort[15];
    char Strasse[20];
    char Hausnr[15];
    char Plz[10];
    int Alter;

    };

    int main ()

    {
    int i;
    struct Person personenzahl[3];

    for (i=0; i<3; i++)
    {
    printf("Daten der %d. Person bitte eingeben\n\n", i+1);
    printf("Nachname: ");
    scanf("%c", &personenzahl[i].Nachname);
    printf("\n");
    printf("Vorname: ");
    scanf("%c", &personenzahl[i].Vorname);
    printf("\n");
    printf("Wohnort: ");
    scanf("%c", &personenzahl[i].Wohnort);
    printf("\n");
    printf("Strasse: ");
    scanf("%c", &personenzahl[i].Strasse);
    printf("\n");
    printf("Hausnr: ");
    scanf("%c", &personenzahl[i].Hausnr);
    printf("\n");
    printf("Plz: ");
    scanf("%c", &personenzahl[i].Plz);
    printf("\n");
    printf("Alter: ");
    scanf("%d", &personenzahl[i].Alter);
    printf("\n");
    }
    return 0;
    }

    Alles was das Programm tun soll ist in einer for-Schleife die Daten einer Person vom Benutzer einzulesen, was aber nicht funktioniert.
    Nach der ersten Eingabe des Nachnamen (Die immer funktioniert), überspringt er die nächsten Eingabeaufforderungen, aber immer zufällig.
    Also die Schleife an sich läuft, aber nicht das, was innerhalb der Schleife passiert.

    Bin schon seit einer Stunde am verzweifeln.
    freue mich auf jegliche Hilfe 🙂



  • Soo ... erstmal Code-Tags drum herum:

    #include <stdio.h>
    
    struct Person
    {
      char Nachname[15];
      char Vorname[15];
      char Wohnort[15];
      char Strasse[20];
      char Hausnr[15];
      char Plz[10];
      int Alter;
    };
    
    int main ()
    
    {
      int i;
      struct Person personenzahl[3];
    
      for (i=0; i<3; i++)
      {
        printf("Daten der %d. Person bitte eingeben\n\n", i+1);
        printf("Nachname: ");
        scanf("%c", &personenzahl[i].Nachname);
        printf("\n");
        printf("Vorname: ");
        scanf("%c", &personenzahl[i].Vorname);
        printf("\n");
        printf("Wohnort: ");
        scanf("%c", &personenzahl[i].Wohnort);
        printf("\n");
        printf("Strasse: ");
        scanf("%c", &personenzahl[i].Strasse);
        printf("\n");
        printf("Hausnr: ");
        scanf("%c", &personenzahl[i].Hausnr);
        printf("\n");
        printf("Plz: ");
        scanf("%c", &personenzahl[i].Plz);
        printf("\n");
        printf("Alter: ");
        scanf("%d", &personenzahl[i].Alter);
        printf("\n");
      }
      return 0;
    }
    

    Ich bin jetzt kein C-Guru, wie so mancher hier im Forum, aber für mich hört sich das so an, als hättest du da ein Problem mit dem Tastaturpuffer. D.h. ... wenn du eine Eingabe mit Enter beendest, wird alles aus dem Tastatur-Puffer an Zeichen ausgelesen ... bis zum Enter ... und Enter bleibt im Tastatur-Puffer.

    Letzte Abschnitt auf:
    http://www.c-howto.de/tutorial-benutzerinteraktion-tastatureingaben.html

    Ob das vorgeschlagene auf c-howto.de jetzt so opitmal ist, kann ich dir auch nicht sagen. Es wird dir aber sehr wahrscheinlich erstmal weiter helfen.



  • Hallo,

    dein scanf-Format ist falsch. Mit "%c" liest du nur ein Zeichen ein, du möchtest aber eine Zeichenkette (string):

    scanf("%s", personenzahl[i].Nachname);
    

    PS:
    Das & kann hier entfallen, da Nachname (und die anderen) schon ein Array ist, d.h. der Name allein schon die Adresse des ersten Zeichens darstellt.



  • Hallo ihr beiden,

    Vielen Dank für die rasanten Antworten!
    Oh man son Basic übersieht man dann doch schnell.


Log in to reply