Em chào anh chị trong diễn đàn ạ.
Em đang làm một bải tập về cấp phát bộ nhớ động với C.
Em thử chạy thử code thì với giá trị nhập vào < = 5 thì code chạy bình thường nhưng khi em nhập vào giá trị lớn hơn 5 thì gặp lỗi.
Em đã thử dubug bằng visual studio rồi nhưng vẫn không hiểu là lỗi gì.
Mong mọi người xem giúp với ạ.
code :
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void arr_input(int *arr, int sz){
for(int i = 0; i < sz; i++){
printf("Nhap vao phan tu thu %d: ", i+1);
scanf("%d",arr+i);
}
}
void arr_output(int *arr, int sz){
printf("\nCac phan tu cua mang la: ");
for(int i = 0; i < sz; i++){
printf(" %d",*(arr+i));
}
printf("\n");
}
void insert_first_arr(int* arr, int* n, int x){
*n+=1;
arr = (int*)realloc(arr,*n);
if(arr==NULL){
printf("Khong du bo nho.");
return;
}
else{
printf("Cap phat bo nho thanh cong. \n");
}
for(int i = *n-1; i >=0;i--){
*(arr+i) = *(arr+i -1);
}
*arr = x;
}
int main(){
printf("\t\t\t Thao tac voi mang mot chieu.");
int sz;
printf("\nNhap vao kich thuoc cua mang: ");scanf("%d",&sz);
int *arr = NULL;
arr = (int*)malloc(sz*sizeof(int));
if(arr==NULL){
printf("Khong du bo nho.\n");
exit(1);
}
else{
memset(arr,NULL,sz*sizeof(int));
printf("Cap phat bo nho thanh cong. \n");
}
arr_input(arr,sz);
arr_output(arr,sz);
insert_first_arr(arr,&sz,5);
printf("Mang sau khi them gia tri la: ");
arr_output(arr,sz);
if(arr!=NULL){
free(arr);
arr =NULL;
}
getchar();
return 0;
}
Em cảm ơn mọi người ạ.