struct und zeiger?



  • Hallo ich bastel gerade ein bisschen mit struct's und habe ein Problem, das ist mein Programm:

    #include <stdio.h>
    
    typedef struct {
    	int		kontonummer; //Kontonummer
    	double	kapital;	 //Kapital
    	float	zinssatz;	 //Zinssatz
    	char*	name;    //Kunden Name
    	char*	vorname; //Kunden Vorname
    } Kunden;
    
    void setKunde(Kunden*, int, double, float, char*, char*);
    
    int main(void){
    	Kunden kunden;
    
    	setKunde(&kunden, 1, 12000.56, 2.5, "Herweg", "Tobias");
    
    	printf("%s\n", kunden.vorname);
    
    	return 0;
    }
    
    void setKunde(Kunden* k, int nr, double kapital, float zSatz, char* name, char vorname){
    	k->kontonummer = nr;
    	k->kapital	   = kapital;
    	k->zinssatz     = zSatz;
    	k->name        = name;
    	k->vorname     = vorname;
    }
    

    Wenn ich dieses Compilieren möchte, bekomme ich auf "printf("%s\n", kunden.vorname);" einen Fehler: Zugriffverletzung beim lesen



  • Ist das "char vorname" bei der Funktionsdefinition so beabsichtigt oder ist das ein C&P-Fehler? Ansonsten solltest du mal einen Debugger fragen, was in dein struct reingeschrieben wurde.



  • Laut Debugger ist im struct drin was auch drin sein soll.
    Ich habe es auch mit kunden.kontonummer versucht, es kommt aber der selbe Fehler.



  • k->name        = name; 
        k->vorname     = vorname;
    

    mal mit

    strdub(k->name, name);
      strdub(k->vorname, vorname);
    

    probieren? Bei Programmende mit free(kunden.vorname) und free(kunden.name) wqieder freigeben. Bin mir net sicher hab gerade keinen Compiler zur Hand.



  • ergibt neue Fehler:
    error LNK2001: Nicht aufgelöstes externes Symbol "_strdub".
    fatal error LNK1120: 1 nicht aufgelöste externe Verweise.



  • lord_fritte schrieb:

    error LNK2001: Nicht aufgelöstes externes Symbol "_strdub".

    strdup vielleicht?
    🙂


Anmelden zum Antworten