On Apr 19, 2:11 am, zehra...@[EMAIL PROTECTED]
wrote:
> Hi,
> I had written application for storing employee data in binary file and
> reading those data from binary file and display it in C language.
> But I face some issue with writing data to binary file.
> Here is my part of my code.
>
> struct cust_data
> {
> int nCAFID;
> char *szFirstName;
>
> };
>
> typedef struct cust_data CUST_DATA;
> CUST_DATA *pCustdata = NULL;
> int AddRecord()
> {
> FILE *fp;
> fp = fopen("Input.dat","ab+");
> return fp;
> pCustdata = malloc(sizeof(CUST_DATA));
>
> pCustData->szFirstName = malloc(sizeof(pCustData-
>
> >szFirstName));
>
> printf("Enter CAFID : ");
> scanf("%d",&pCustData->nCAFID);
>
> printf("Enter First Name : ");
> scanf("%s",pCustData->szFirstName);
>
> fwrite(pCustData,sizeof(CUST_DATA),1,fp);
>
> fclose(fp);
>
> free(pCustData->szFirstName);
> free(pCustData)
>
> }
>
> now here when i write a structure to file, it writes nCAFID and
> inplace of szFirstName it writes pointer to string.
> But i need to write string..
> if i take szFirstName as char array then it is wroking fine.....but i
> want to use heap memory instead of stack..
> can anyone help me..................??
> thanks in advance.............
> --
> comp.lang.c.moderated - moderation address: c...@[EMAIL PROTECTED]
-- you
must
> have an appropriate newsgroups line in your header for your mail to be
seen,
> or the newsgroup name in square brackets in the subject line. Sorry.
---pCustdata = malloc(sizeof(CUST_DATA));
By above statement .. you are allocating the memory for structure..
--pCustData->szFirstName = malloc(sizeof(pCustData->szFirstName))
By above statement you are allocating only "sizeof(pCustData-
>szFirstName))" which may be max of 4 .. Try with allocating more
memory to this structure ....
like .. pCustData->szFirstName = malloc(sizeof(char) * 100);
--
comp.lang.c.moderated - moderation address: clcm@[EMAIL PROTECTED]
-- you must
have an appropriate newsgroups line in your header for your mail to be
seen,
or the newsgroup name in square brackets in the subject line. Sorry.


|