Go4Expert

Go4Expert (http://www.go4expert.com/)
-   C (http://www.go4expert.com/forums/c/)
-   -   Array copying problem (http://www.go4expert.com/forums/array-copying-problem-t21194/)

arun10427 4Mar2010 11:11

Array copying problem
 
Hi I am trying to copy one struct to another, but I am making some minor mistake that it is not getting copied. Can someone help me fix it?

Code:


#include<stdio.h>
#include<stdlib.h>
typedef struct
{
    int inst_addr;
}instruction;

void copy_struct(instruction src,instruction dest)
{
    dest.inst_addr = src.inst_addr;
}

int main()
{
    int addr = 1000;
    instruction check1;
    instruction check2;
    check1.inst_addr = 10;
    check2.inst_addr = 50; 
    copy_struct(check1,check2);
    printf("%d",check2.inst_addr);
}


ungalnanban 4Mar2010 11:28

Re: Array copying problem
 
You need to send two pointers to the function that will copy the structure.

Code:

void copy_struct(instruction *src, instruction *dest)
{
 *dest=*src;
}



see the Link
http://cboard.cprogramming.com/c-pro...n-problem.html

karthigayan 4Mar2010 11:33

Re: Array copying problem
 
You can not straight away copy the structure ,you need to pass the address of the structure to the function then using that address you can copy the contents.

arun10427 4Mar2010 11:39

Re: Array copying problem
 
@ungalnanban

Thanks for ur reply..
But when i call the function in main, I get this error.

arun10427 4Mar2010 11:46

Re: Array copying problem
 
This is the error message:


error: incompatible type for argument 1 of ‘copy_struct’
note: expected ‘struct instruction *’ but argument is of type ‘instruction’
error: incompatible type for argument 2 of ‘copy_struct’
note: expected ‘struct instruction *’ but argument is of type ‘instruction’

Am I making some mistake in calling the fuction?

abubacker1 4Mar2010 12:15

Re: Array copying problem
 
Code:

typedef struct
{
    int inst_addr;
}instruction;

void copy_struct(instruction *src,instruction *dest)
{
  dest->inst_addr = src->inst_addr;
}

int main()
{
    int addr = 1000;
    instruction check1;
    instruction check2;
    check1.inst_addr = 10;
    check2.inst_addr = 50;
    copy_struct(&check1,&check2);
printf("%d",check2.inst_addr);
}


abubacker1 4Mar2010 12:19

Re: Array copying problem
 
The above code is similar to arun10427 code , but I changed the function call as a
call by reference.

abubacker1 4Mar2010 12:23

Re: Array copying problem
 
want to copy the whole struct
try this
*dest =*src ;

ungalnanban 4Mar2010 12:26

Re: Array copying problem
 
See the following Example:


Code:

#include<stdio.h>

typedef struct
{
        int inst_addr;
}instruction;

void copy_struct(instruction *src,instruction *dest)
{
        *src=*dest;
}


int main()
{
        int addr = 1000;
        instruction check1;
        instruction check2;

        check1.inst_addr = 10;
        check2.inst_addr = 50;
        printf("One: %d\n",check1.inst_addr);
        printf("Two: %d\n",check2.inst_addr);
        copy_struct(&check1,&check2);
        printf("One: %d\n",check1.inst_addr);
        printf("Two: %d\n",check2.inst_addr);
}

Output:
One: 10
Two: 50
One: 50
Two: 50


All times are GMT +5.5. The time now is 12:15.