Dynamic memory allocation and structure fields

Join the discussion
Ask a follow-up here, or get your own question answered by working scientists, mathematicians and engineers — people, not an autocomplete.
Real named experts · corrections over time · the nuance an AI answer skips
5 replies · 3K views
pairofstrings
Messages
411
Reaction score
7
Please take a look at my program. Please help.

I want to allocate memory dynamically for one field in structure.
I tried to write the code but it has error. I posting a paint document for you to see. Help me please. Please tell me why is my code not working properly and what needs to be done.
Thank you.

dmaandstructures.png
 
Physics news on Phys.org
pairofstrings said:
Please take a look at my program. Please help.

I want to allocate memory dynamically for one field in structure.
I tried to write the code but it has error. I posting a paint document for you to see. Help me please. Please tell me why is my code not working properly and what needs to be done.
Thank you.

dmaandstructures.png
Is this homework? It looks a little too pro.

Your problem is that you don't seem to know what a pointer is or does. Think about it a while. It takes a bit of getting used to. Like s.x is not the same as s->x.
 
The definition for struct student should be moved to before main. The instance of s is OK to have in main. You need to allocate s before attempting to allocate s.name. There are other problems such as sizeof(name), which needs to be sizeof(struct student s.name).
 
pairofstrings said:
Please take a look at my program. Please help.

I want to allocate memory dynamically for one field in structure.
I tried to write the code but it has error. I posting a paint document for you to see. Help me please. Please tell me why is my code not working properly and what needs to be done.
Thank you.

dmaandstructures.png

You want to have
struct student s;
instead of
struct student *s;

In the second case you have an uninitialized pointer, which means it points at garbage. There's no advantage to that.
 
ImaLooser said:
You want to have
struct student s;
instead of
struct student *s;
or allocate s first and then allocate s->name. I'm not sure if you want s to be a pointer to a structure or an instance of a structure. You could also use a typedef to avoid having to use struct with each declaration:

typedef struct
{
int rno;
char *name;
float marks;
}STUDENT;

then later in main you can use

void main()
{
STUDENT s; // declare an instance of s

or if you want a pointer

STUDENT *s = malloc(sizeof(STUDENT));
 
This is how far I got after trying for three days. I know I can access structure members using .* or -> operators but it is not working in this case.
dmaandstructures3.png
 
Last edited: