Mình đang học C, đến phần dùng malloc, calloc và realloc.
Mình có tạo 2 con trỏ và thêm giá trị cho chúng, sau đó dùng realloc để mở rộng.
Thì với con trỏ thứ nhất mọi thứ ok, đến con trỏ thứ 2 thì bị lỗi ko thêm được giá trị. Mọi người xem giúp mình với ạ.
Mình cảm ơn.
Sau khi dùng realloc để mở rộng con trỏ p1 và p2.
Nhập tiếp các phần tử thứ 6-10 của con trỏ p1 hoàn toàn bình thường.
Nhưng bắt đầu nhập phần tử thứ 6 của con trỏ p2 là bị lỗi như thế kia luôn. Rồi nó tắt đi chứ ko chạy code tiếp.
#include <stdio.h>
#include <stdlib.h>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
int main(int argc, char *argv[]) {
//02 Tao mang ky tu su dung malloc, calloc, realloc
//Khai bao 2 con tro p1 va p2:
int *p1, *p2;
p1 = (int*)malloc(5*sizeof(int));
p2 = (int*)calloc(5, sizeof(int));
int i;
printf("Nhap cac phan tu cho mang 1:\n");
for(i = 0; i<5; i++)
{
printf("Phan tu so %d la:", i+1);
scanf("%d", p1+i);
}
printf("\nMang vua nhap la:\n");
for(i = 0; i<5; i++)
{
printf("%d\t", *(p1+i));
}
printf("\nNhap cac phan tu cho mang 2:\n");
for(i = 0; i<5; i++)
{
printf("Phan tu so %d la:", i+1);
scanf("%d", p2+i);
}
printf("\nMang vua nhap la:\n");
for(i = 0; i<5; i++)
{
printf("%d\t", *(p2+i));
}
//Dung realloc mo rong con tro p1:
p1=(int*)realloc(p1, 10);
//Them phan tu cho mang p1
for(i = 5; i<10; i++)
{
printf("\nPhan tu so %d la:", i+1);
scanf("%d", p1+i);
}
printf("\nMang vua nhap la:\n");
for(i=0; i<10; i++)
{
printf("%d\t", *(p1+i));
}
//Them phan tu cho mang p2:
p2=(int*)realloc(p2, 10);
for(i = 5; i<10; i++)
{
printf("\nPhan tu so %d la:", i+1);
scanf("%d", p2+i);
}
printf("\nMang vua nhap la:\n");
for(i=0; i<10; i++)
{
printf("%d\t", *(p2+i));
}
return 0;
}