Kleine Frage Struct

  • geschlossen
  • C

  • Durable
  • 1396 Aufrufe 5 Antworten

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Kleine Frage Struct

    Hey leute,

    ich hab in der uni die Aufgabe auf:

    Schreiben Sie ein Programm, welches eine Struktur mit dem Namen employee und den Elementen name, firstname sowie age deklariert. Überlegen Sie sich sinnvolle Datentypen für die Elemente.
    Definieren Sie in main() ein Array mit drei Elementen dieser Struktur. Weisen Sie in einer Schleife
    diesen jeweils Werte zu und drucken Sie diese anschließend wieder mit einer Schleife auf dem
    Bildschirm aus.


    Was wird mit dem Satz:
    "Definieren Sie in main() ein Array mit drei Elementen dieser Struktur"
    gemeint ? Kapier ich irgendwie nicht.

    mein c code:

    Quellcode

    1. struct employee{
    2. char name[20];
    3. char firstname[20];
    4. int age;
    5. };
    6. int main(void){
    7. _getch();
    8. return EXIT_SUCCESS;
    9. }
    Alles anzeigen
  • Hab das jetzt so gelößt:

    C-Quellcode

    1. #include <stdio.h>
    2. #include <stdlib.h>
    3. #include <conio.h>
    4. #include <string.h>
    5. struct employee{
    6. char name[20];
    7. char firstname[20];
    8. int age;
    9. };
    10. int main(void){
    11. struct employee Kunde[3];
    12. int i;
    13. for(i=1;i<=3;i++)
    14. {
    15. char ca[20];
    16. int ia;
    17. printf("Bitte Nachname fuer Kunde %d eingeben\n", i);
    18. scanf("%s",&ca);
    19. strncpy (Kunde[i].name, ca, 20);
    20. printf("Bitte Vornamen fuer Kunde %d eingeben\n", i);
    21. scanf("%s",&ca);
    22. strncpy (Kunde[i].firstname, ca, 20);
    23. printf("Bitte Alter fuer Kunde %d eingeben\n", i);
    24. scanf("%d",&ia);
    25. Kunde[i].age = ia;
    26. }
    27. i = 0;
    28. for(i = 1; i <=3; i++)
    29. {
    30. printf("Name Kunde %d: %s\n",i ,Kunde[i].name);
    31. printf("Vorname Kunde %d: %s\n",i ,Kunde[i].firstname);
    32. printf("Alter Kunde %d: %d\n",i ,Kunde[i].age);
    33. }
    34. _getch();
    35. return EXIT_SUCCESS;
    36. }
    Alles anzeigen


    Funktioniert auch, nur bekomme ich vor Programmende einen Fehler: "Run-Time Check Failure #2 - Stack around the variable 'Kunde' was corrupted."

    was is da los ? :)
  • Durable schrieb:

    Funktioniert


    Kann eigentlich nicht funktionieren, da du mit diesem Code auf Kunde[3] zugreifst, das existiert aber nicht.
    Wenn du ein Array mit 3 Eintraegen hast, dann gehen die Indezes von 0 bis 2, also es gibt nur Kunde[0], Kunde[1] und Kunde[2].
    Und btw: strncpy und so brauchst du nicht.

    C-Quellcode

    1. #include <stdio.h>
    2. #include <conio.h>
    3. struct employee{
    4. char name[20];
    5. char firstname[20];
    6. int age;
    7. };
    8. #define ANZ 3
    9. int main(void){
    10. struct employee Mitarbeiter[ANZ];
    11. int i;
    12. for(i=1;i<=ANZ;i++)
    13. {
    14. printf("Bitte Nachname fuer Mitarbeiter %d eingeben\n", i);
    15. scanf("%s",&Mitarbeiter[i-1].name);
    16. printf("Bitte Vornamen fuer Mitarbeiter %d eingeben\n", i);
    17. scanf("%s",&Mitarbeiter[i-1].firstname);
    18. printf("Bitte Alter fuer Mitarbeiter %d eingeben\n", i);
    19. scanf("%d",&Mitarbeiter[i-1].age);
    20. }
    21. i = 0;
    22. for(i = 1; i <= ANZ; i++)
    23. {
    24. printf("Name Mitarbeiter %d: %s\n",i ,Mitarbeiter[i-1].name);
    25. printf("Vorname Mitarbeiter %d: %s\n",i ,Mitarbeiter[i-1].firstname);
    26. printf("Alter Mitarbeiter %d: %d\n",i ,Mitarbeiter[i-1].age);
    27. }
    28. _getch();
    29. return 0;
    30. }
    Alles anzeigen
    Wo ist der Discord Server