Werte an Struktur ein- und auslesen



  • Hallo Leute,
    bin relativ neu mit C dabei.

    Habe allerdings schon etwas erfahrung mit html, css und java.

    nun zu meinem problem:
    ich möchte mir ein programm schreiben um kundendaten über die konsole einzugeben, in einer datei zu speichen und auch wieder auszulesen.

    allerdigs hapert es schon daran die datein einzulesen (dier part klappt) und sie anschließend direkt wieder auszugeben (dieser part klappt nicht)

    der code sieht wie folgt aus:

    #include <stdio.h>
    #include <stdlib.h>
    
    typedef struct struktur{
            char Nachname[40];
            char Vorname[30];
            char StrasseundHausnummer[60];
            char PLZ[5];
            char Ort[50];
            char Festnetz[15];
            char Mobil[20];
            char Fax[15];
            char EMail[60];
            char Geburtsdatum[10];
            char Kundennummer[8];
    } kunde;
    
    char kundenEingabe(kunde k1){
    
         printf("Nachname.................: ");
         scanf("%s", &k1.Nachname);
    
         printf("Vorname..................: ");
         scanf("%s", &k1.Vorname);
    
         printf("Strasse und Hausnummer...: ");
         scanf("%s", &k1.StrasseundHausnummer);
    
         printf("PLZ......................: ");
         scanf("%s", &k1.PLZ);
    
         printf("Ort......................: ");
         scanf("%s", &k1.Ort);
    
         printf("Telefon Festnetz.........: ");
         scanf("%s", &k1.Festnetz);
    
         printf("Telefon Mobil............: ");
         scanf("%s", &k1.Mobil);
    
         printf("Fax......................: ");
         scanf("%s", &k1.Fax);
    
         printf("E-Mail...................: ");
         scanf("%s", &k1.EMail);
    
         printf("Geburtsdatum.............: ");
         scanf("%s", &k1.Geburtsdatum);
    
         printf("Kundennummer.............: ");
         scanf("%s", &k1.Kundennummer);
    
         printf("1: %s", k1.Nachname);  // 1
    
         printf("\n");
    }
    
    void kundenAusgabe(kunde k1){
                           printf("Nachname.................: %s\n", k1.Nachname);
                           printf("Vorname..................: %s\n", k1.Vorname);
                           printf("Strasse und Hausnummer...: %s\n", k1.StrasseundHausnummer);
                           printf("PLZ......................: %s\n", k1.PLZ);
                           printf("Ort......................: %s\n", k1.Ort);
                           printf("Telefon Festnetz.........: %s\n", k1.Festnetz);
                           printf("Telefon Mobil............: %s\n", k1.Mobil);
                           printf("Fax......................: %s\n", k1.Fax);
                           printf("E-Mail...................: %s\n", k1.EMail);
                           printf("Geburtsdatum.............: %s\n", k1.Geburtsdatum);
                           printf("Kundennummer.............: %s\n", k1.Kundennummer);
                           printf("\n");
    }
    
    int main(int argc, char *argv[]){
    
        kunde k1;
        kundenEingabe(k1);
        printf("2: %s", k1.Nachname); // 2
        kundenAusgabe(k1);
    
      system("PAUSE");	
      return 0;
    }
    

    an der stelle //1 sind die daten noch korrekt => einlesen klappt
    an der stelle //2 kommt nur müll über die konsole raus
    => die werte werden aus der struktur bzw. der funktion nicht an die main-methode übergeben. wie kann ich das problem lösen.
    habe auch schon versucht die struktur wie auf galileo-computing aufzubauen, hat aber leider auch nicht geklappt.

    ich hoffe ihr könnt mir helfen.
    aja die fachausdrücke wie pointer und sowas habe ich noch nicht so drauf.
    also am liebsten in laiensprache.

    schon mal danke im vorraus!



  • Entweder:

    kunde kundenEingabe(){
    kunde k1;
    
    ...
    
    return k1;
    }
    
    ...
    int main(int argc, char *argv[]){
    
        kunde k1;
        k1 = kundenEingabe();
    
    ...
    

    oder:

    void kundenEingabe(kunde *k1){
    ...
    
    }
    ...
    int main(int argc, char *argv[]){
    
        kunde k1;
        kundenEingabe(&k1);
    
    ...
    

    Im ersten Fall erstellst Du in der Eingabefunktion eine Kundenstruktur und gibst sie an den Aufrufer zurück, der sie per Zuweisung in einer Struktur speichert, die er selbst erstellt hat:
    k1 = kundenEingabe();

    Im zweiten Fall erstellt der Aufrufer eine Struktur und übergibt der Eingabefunktion einen Zeiger darauf und die Eingabefunktion arbeitet direkt auf der Struktur des Aufrufers.
    Dann muß der . - Operator geändert werden in den -> Operator, also aus
    &k1.Nachname wird &k1->Nachname usw.




Anmelden zum Antworten