Sao chép mảng trong C?

bài toán: Tạo một function copyArray để chép nội dung array này sang một array khác.
code:

#include <stdio.h>
#include "helloc.h"

int main()
{
    int i = 0, n = 3;
    int mang1[n], mang2[n];
    coppy(mang1,mang2,n);
    for(i = 0; i < n; i++)
    {
        printf("%d = %d\n",mang1[i],mang2[i]);
    }
}
void coppy(int mang1[], int mang2[], int n)
{
    int i = 0;
    for(i = 0; i < n; i++)
    {
        printf("nhap vao gia tri trong mang1[%d] = ",i);
        scanf("%d",&mang1[i]);
        mang1[i] = mang2[i];
    }// nhap cac gia tri trong mang1
}

kết quả thật đáng buồn:
nhap vao gia tri trong mang1[0] = 34
nhap vao gia tri trong mang1[1] = 45
nhap vao gia tri trong mang1[2] = 56
0 = 0
0 = 0
15774429 = 15774429
ai biết sao chép mảng trong C chỉ mình với. thank all

1 Like

quả là vi diệu , nhưng mà cái hàm bác làm nó ko trả về giá trị , thì ko có gia trị là đúng r

1 Like

Viết ngược rồi =) nhập vào mảng 1 mà gán mảng 1 bằng mảng 2 là thế nào.

Với lại phần nhập xuất phải viết riêng.

3 Likes

Em đi theo trình tự 2 bước như thế này là sẽ làm được:

  1. viết hàm nhập mảng a
  2. viết hàm sao chép mảng a sang mảng b (có thể dùng memcpy cho nhanh)
1 Like
#include <stdio.h>
#include "helloc.h"

void nhapa(int a1[],int n);
int main()
{
    int i, n = 3;
    int a1[n],a2[n];
    nhapa(a1,n);
    for(i = 0; i < n; i++)
    {
        printf("hien thi a1[%d] = %d\n",i,a1[i]);
    }
    for(i = 0; i < n; i++)
    {
        a2[i] = a1[i];
    }
    for(i = 0; i < n; i++)
    {
        printf("hien thi a2[%d] = %d\n",i,a2[i]);
    }

    return 0;
}
void nhapa(int a1[], int n)
{
    int i = 0;
    for(i = 0; i < n; i++)
    {
        printf("nhap vao a1[%d] = ",i);
        scanf("%d",&a1[i]);
    }
}

em cố gắng làm theo hướng dẫn các bước của anh chỉ và đã được như mong đợi rồi ạ, nhưng nó chỉ đúng ở bài toán thôi còn em muốn trình bày kiểu khác mà sao em cứ trình bày theo kiểu khác là lỗi ạ! buồn ghê á.

kiểu khác của em là như thế nào, em trình bày thử. Ah, trước khi em paste code vào forum, em ctrl+a nó, rồi tab 1 cái là chèn vào sẽ ko bị lỗi như trên.

int CoppyArray( int A1[], int B2[],int Kichthuoc)
{
	int i ;
	i = Kichthuoc;
	// kiem tra gia tri cua cac phan tu trong A1
	for (i = 0 ; i < Kichthuoc ; i++)
	{
		printf("gia tri cua  A1[%d] la %d\n",i,A1[i]);

	}
	printf("coppy gia tri cua A1 vao B2\n");
	// gan  gia tri cac phan tu cua B2 vao A1
	for(i = 0 ; i < Kichthuoc ; i++)
		{
			A1[i] = B2[i];
		printf("gia tri cua  A1[%d] la %d \n",i,A1[i]);
	}
	
	return 0;

}


int main(int argc, char const *argv[])
{
	// gia su ta co hai mang A va B:
	int A[4] = {10, 20 , 30 ,40};
	int B[4] = {50 , 60 ,70 ,80};

	CoppyArray(A, B, 4);
	
return 0;
}
#include <stdio.h>
#include <stdlib.h>
void chepmang(int array1[],int array2[],int kichthuoc);
void hienthi(int array2[],int kichthuoc);
int main()
{
    int array1[4]={1,2,4,5};
    int array2[4]={0};
    printf("kiem tra lai gia tri array2[]:\n");
    hienthi(array2,4);
    printf("chep noi dung array1 sang array2\n");
    chepmang(array1,array2,4);
    return 0;
}
void hienthi(int array2[],int kichthuoc)//kiem tra lai gia tri array2[]
{
    int i;
    for(i=0;i<kichthuoc;i++)
        printf("array2[%d]=%d\n",i,array2[i]);


}
void chepmang(int array1[],int array2[],int kichthuoc)
{

int i;
for(i=0;i<kichthuoc;i++)
{

    printf("array2[%d]=%d\n",i,array1[i]);
}

}

A post was split to a new topic: Kiểm tra các phần tử có trong mảng a và in các phần tử âm đó ra mảng b

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?