Tình hình là em làm bài tập c tới phần thêm hàng cho mảng động 2 chiều thì bị mắc một lỗi runtime không hiểu nguyên nhân, vì vậy nên em làm một chương trình nhỏ để test thử như hình bên dưới, đúng như dự đoán, nó gặp lỗi tương tự
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
void themhang(int**,int*,int);
void xuat(int**,int,int);
int main(){
int **a,i,j,sohang=3,socot=3;
a=(int**)malloc(sizeof(int*)*sohang);
for(i=0;i<sohang;i++)
a[i]=(int*)malloc(sizeof(int)*socot);
for(i=0;i<sohang;i++)
for(j=0;j<socot;j++)
a[i][j]=3;
printf("Mang goc:\n");
xuat(a,sohang,socot);
themhang(a,&sohang,socot);
printf("Sau khi them mot hang:\n");
xuat(a,sohang,socot);
themhang(a,&sohang,socot);
printf("Sau khi them hai hang:\n");
xuat(a,sohang,socot);
getch();
return 0;
}
void themhang(int **a,int *sohang,int socot){
int i,j;
(*sohang)++;
a=(int**)realloc(a,sizeof(int*)*(*sohang));
a[*sohang-1]=(int*)malloc(sizeof(int)*socot);
for(i=*sohang-1;i>0;i--)
for(j=0;j<socot;j++)
a[i][j]=a[i-1][j];
for(i=0;i<socot;i++)
a[0][i]=5;
}
void xuat(int **a,int sohang,int socot){
int i,j;
for(i=0;i<sohang;i++){
printf("%d",a[i][0]);
for(j=1;j<socot;j++)
printf(" %d",a[i][j]);
printf("\n");
}
}
Ngộ lắm, em không tách hàm việc thêm hàng, gom chung trong hàm main luôn thì không sao, nhưng cứ tách hàm ra là bị, mà gọi hàm lần thứ nhất bình thường, lần thứ hai mới bị lỗi
Mong các anh chị giải thích lỗi và tìm hướng giải quyết