Hello Folks:
Please see the below code.
char ** struct element donot print the values correctly in main(). But if it is printed within the func:assignStrctElements(), it prints correct. What is wrong here?
Appreciate if anyone has any suggestions.
Thanks in advance.
Code:
#include <stdio.h>
#include <stdlib.h>
#include <stdarg.h>
#include <assert.h>
struct abc {
int count;
char** bull;
char** cat;
} ;
main()
{
int i =0;
int ii=0;
struct abc *Revdstrct = NULL;
Revdstrct = (struct abc*)malloc(sizeof(struct abc)*10);
assignStrctElements(Revdstrct);
for(i=0;i<10;i++)
for(ii=0;ii<10;ii++)
printf("\n FROM MAIN: count:%d bull:%s cat:%s",(Revdstrct[i].count),(Revdstrct[i].bull[ii]),(Revdstrct[i].cat[ii]));
}
void assignStrctElements(struct abc *Revdstrct)
{
int j = 0;
int jj=0;
int k=0;
int kk=0;
if(Revdstrct)
{
for(j=0;j<10;j++)
{
Revdstrct[j].count = j;
Revdstrct[j].bull=malloc(sizeof(char*)*10);
Revdstrct[j].cat=malloc(sizeof(char*)*10);
for(jj=0;jj<10;jj++)
{
Revdstrct[j].bull[jj]=malloc(sizeof(char)*256);
strcpy((Revdstrct[j].bull[jj]),"ABCD");
Revdstrct[j].cat[jj]=malloc(sizeof(char)*256);
strcpy((Revdstrct[j].cat[jj]),"XYZ");
}
}
for(k=0;k<10;k++)
for(kk=0;kk<10;kk++)
printf("\n FROM FUNC: count:%d bull:%s cat:%s",(Revdstrct[k].count),(Revdstrct[k].bull[kk]),(Revdstrct[k].cat[kk]));
}
}