如何进行C语言数组拷贝

焚琴煮鹤 发布于 2014/10/05 11:37
阅读 4K+
收藏 0
想把一个已经初始化的数组元素,
拷贝到另外一个数组,该怎么做?

我是这样写,一直出错!!!
[code=c]
#include <stdio.h>

struct arr{
        int a1[5];
        int b1[5];
};

int main(void)
{
        struct arr z;
        z.b1 = {6,7,8,9,10};
        int i;
        z.a1 = z.b1;

        for(i = 0; i<=4; i++)
                //z.a1[i] = z.b1[i];
                printf("a1[%d]=%d\n", i,z.a1[i]);

        return 0;
}

[/code]
编译一直出现下面的错误:
arr_op.c: In function ‘main’:
arr_op.c:11: error: expected expression before ‘{’ token
arr_op.c:13: error: incompatible types in assignment
[root @localhost workspace]#

加载中
0
DavidWTF
DavidWTF
初始化变量只能在变量定义时。所以z.b1=…是不对的。但可以是struct arr z={{0},{6,7,8,9,10}};数组不能直接赋值,需要给数组指定下标的元素赋值,所以z.a1=z.b1是不对的。z.a1[0]=z.b1[0]是可以的。
临峰不畏
临峰不畏
正解
0
firebroo
firebroo
int main(void) {
    int a[5] = {1,2,3,4,5};
    int b[5];
    for(int i=0;i<5;i++){
        *(b+i) = *(a+i);
    }
    for(int i=0;i<5;i++){
        printf("b[%d]: %d\n",i,b[i]);
    }

}

这样满足吗?我一般就是用指针操作来操作数组。

#include <stdio.h>

int main(void) {     int a[5] = {1,2,3,4,5};     int *p = a;     for(int i=0;i<5;i++){         printf("b[%d]: %d\n",i,p[i]);     } }

0
Micooz
Micooz
[]数组可以通过花括号初始化,但不能赋值,因此请初始化或者依次给每一个元素赋值后再进行拷贝,拷贝可以通过循环,或者memcpy内存直接拷贝
0
tsl0922
tsl0922
memcpy 比较方便些
0
中山野鬼
中山野鬼
哈,好代码,殊路同归。错的代码, 则是五花八门。。。。。
返回顶部
顶部