Ein Array mit hilfe von Zeigern füllen?



  • Hi,

    ich habe meinem struct in main ein Array mit 3 Elemente gegeben und blicke nicht wie ich diese mit hilfe von Zeigern in meiner "f" Funktion füllen kann?

    Ich habe versucht dem Zeiger eine Variable [i] zu geben um dann mit einer for Schleife das Array zu füllen das hat aber nicht geklappt.

    #include <stdio.h>
    #include <stdlib.h>
    #include <conio.h>
    
    struct employee
    	{
    		char firstname[10];
    		char name[10];
    		int birthday;	
    	};
    
    int f(struct employee*);
    int print(struct employee*);
    
    int main()
    {
    	struct employee person[3];
    
    	f(person);
    
    	getch();
    	return 0;
    }
    
    int f(struct employee *z)
    {
    	printf("Name eingeben: \n");
    	scanf("%s", z->firstname);
    	printf("Nachname eingeben: \n");
    	scanf("%s", z->name);
    	printf("Alter eingeben: \n");
    	scanf("%d", &(z->birthday));
    	print(z);
    }
    
    int print(struct employee *z)
    {
    	printf("%s\n", z->firstname);
    	printf("%s\n", z->name);
    	printf("%d\n", z->birthday);
    }
    


  • Hi,

    int input(struct employee *z, unsigned n) 
    { 
    /* Hier noch ne Schleife und Anweisungen einbauen.
    z[i].firstname
    z[i].name
    &z[i].birthday
    */
    } 
    
    int print(struct employee *z, unsigned n) 
    { 
    /* Hier noch in eine Schleife verpacken.
    z[i].firstname
    z[i].name
    z[i].birthday
    */
    }
    

    reicht das als Hinweis?
    Gruß,
    B.B.



  • Für was ist das unsigned n?



  • ITzEmir schrieb:

    Für was ist das unsigned n?

    Kann nicht negativ werden, dafür aber doppelt so groß.



  • ITzEmir schrieb:

    Für was ist das unsigned n?

    Das ist die Anzahl der Strukturen, die du übergibst.

    int input(struct employee *z, unsigned n)
    {
        unsigned i=0;
        while(i<n)
        {
            //...
            i++;
        }
    }
    


  • #include <stdio.h>
    #include <stdlib.h>
    #include <conio.h>
    #include "Utilities.h"
    
    struct employee
    	{
    		char firstname[10];
    		char name[10];
    		int birthday;	
    	};
    
    int f(struct employee*);
    int print(struct employee*);
    
    int main()
    {
    	struct employee person[3];
    
    	f(person);
    
    	getch();
    	return 0;
    }
    
    int f(struct employee *z, unsigned n) 
    {
    	int i;
    	for(i=0; i<3; i++)
    	{
    	z[i].firstname; 
    	z[i].name; 
    	&z[i].birthday;
    
    	printf("Name eingeben: \n");
    	scanf("%s", z->firstname);
    	printf("Nachname eingeben: \n");
    	scanf("%s", z->name);
    	printf("Alter eingeben: \n");
    	scanf("%d", &(z->birthday));
    
    	_clrscr();
    }
    	print(z);
    }
    
    int print(struct employee *z, unsigned n)
    {
    	int i;
    	for(i=0; i<3; i++)
    	{
    	z[i].firstname; 
    	z[i].name; 
    	z[i].birthday;
    
    	printf("%s\n", z->firstname);
    	printf("%s\n", z->name);
    	printf("%d\n", z->birthday);
    	}
    }
    

    Ok so sieht mein code jetzt aus. Die Printfunktion klappt immer noch nicht? Achso noch eine frage zu:

    z[i].firstname; 
    z[i].name; 
    z[i].birthday;
    

    gibst du hier dem Zeiger ein Array? Ich blicks noch nicht ganz^^



  • Was muss ich der Print als Parameter geben damit sie nicht nur das letzte 3 mal ausgibt was ich eingegeben habe sondern alles?



  • ITzEmir schrieb:

    Ok so sieht mein code jetzt aus. Die Printfunktion klappt immer noch nicht? Achso noch eine frage zu:

    z[i].firstname; 
    z[i].name; 
    z[i].birthday;
    

    gibst du hier dem Zeiger ein Array? Ich blicks noch nicht ganz^^

    Die Variablen sollst du benutzen, nicht einfach so ungenutzt stehen lassen, ne.
    Musst du also noch in deine printf und scanf Funktionen einbauen.


Anmelden zum Antworten