0

hey guys,

i'm trying to acces the the member of my person structure, can someone help me,
what am i doing wrong are what am i forgetting

#include <stdio.h>
#include <stdlib.h>



typedef struct { 
        char *vnaam;
        char *anaam;
        int leeftijd;
        } persoon;

       persoon *q, p1;  
       //char antwoord2b[128];  
       

	  
	 void drukaf(persoon p){
           printf("\nVoornaam: %s\n",p.vnaam);
           printf("\nAchternaam: %s\n",p.anaam);
           printf("\nLeeftijd: %i\n",p.leeftijd);
       }

	void vulwaarde(persoon p, char *vnaam, char *anaam, int leeftijd){
         p.vnaam=vnaam;        
		 p.anaam=anaam;        
		 p.leeftijd=leeftijd;
	}
    
    void vulwaarde(persoon, char *, char *, int);
	void drukaf(persoon);
	
int main(int argc, char *argv[])
{
    q = malloc(sizeof(persoon));
    vulwaarde(p1, "Donnovan","Deekman",25);
    vulwaarde(*q, "Tatjana","Deekman",18);
    drukaf(p1);  
    drukaf(*q);
    free(q);
  
  system("PAUSE");	
  return 0;
}
2
Contributors
2
Replies
3
Views
7 Years
Discussion Span
Last Post by Donnovan
0

You're forgetting that function parameters are always passed by value in C. If you want to specify an output or reference parameter, you use pointers:

#include <stdio.h>
#include <stdlib.h>

typedef struct { 
  char *vnaam;
  char *anaam;
  int leeftijd;
} persoon;

persoon *q, p1;  

void drukaf(persoon p){
  printf("\nVoornaam: %s\n",p.vnaam);
  printf("\nAchternaam: %s\n",p.anaam);
  printf("\nLeeftijd: %i\n",p.leeftijd);
}

void vulwaarde(persoon *p, char *vnaam, char *anaam, int leeftijd){
  p->vnaam=vnaam;        
  p->anaam=anaam;        
  p->leeftijd=leeftijd;
}

int main(int argc, char *argv[])
{
  q = malloc(sizeof(persoon));
  vulwaarde(&p1, "Donnovan","Deekman",25);
  vulwaarde(q, "Tatjana","Deekman",18);
  drukaf(p1);  
  drukaf(*q);
  free(q);

  return 0;
}
This topic has been dead for over six months. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.