Question
#include<stdio.h>
#include<malloc.h>
struct emp
{
int len;
char name[1];
};
int main()
{
char newname[] = "Rahul";
struct emp *p = (struct emp *) malloc(sizeof(struct emp) -1 +
strlen(newname)+1);
p->len = strlen(newname);
strcpy(p -> name, newname);
printf("%d %s\n", p->len, p->name);
return 0;
}
Will the following code work?
#include<stdio.h>
#include<malloc.h>
struct emp
{
int len;
char name[1];
};
int main()
{
char newname[] = "Rahul";
struct emp *p = (struct emp *) malloc(sizeof(struct emp) -1 +
strlen(newname)+1);
p->len = strlen(newname);
strcpy(p -> name, newname);
printf("%d %s\n", p->len, p->name);
return 0;
}
Answer: Option A
Was this answer helpful ?
The program allocates space for the structure with the size adjusted so that the
name field can hold the requested name.
Was this answer helpful ?
More Questions on This Topic :
Question 4.
Union elements can be of different sizes.
....
Question 7.
Which of the following statement is True?
....
Question 9.
Bit fields CANNOT be used in union.
....
Submit Solution