Em có thắc về cấp phát mạng động c++,ở c++ thì ta ko thể mở rộng trực tiếp đc số lượng của mảng động a mà phải tạo thêm 1 mảng b nữa để sao chép rồi giải phóng mảng a rồi mới mở rộng ra nhưng nếu đọc file bằng eof thì lại ko cần đến cái này
Mọi người giải thích giúp em với ạ
#include<iostream.h>
#include<fstream.h>
struct Hokhau
{
char ma[5];
char ten[10];
int so_nguoi;
};
void doc_file(Hokhau *a,int &n)
{
fstream f;
f.open("hk.txt",ios::in);
if(!f)
{
cout<<"\nKhong mo dc tep"<<endl;
exit(1);
}
n=0;
while(!f.eof())
{
f>>a[n].ma>>a[n].ten>>a[n].so_nguoi;
n++;
}
f.close();
}
void xuat(Hokhau *a,int n)
{
for(int i=0;i<n;i++)
{
cout<<a[i].ma<<"\t"<<a[i].ten<<"\t"<<a[i].so_nguoi<<endl;
}
}
int main()
{
Hokhau *a;
int n;
a=new Hokhau[n];
doc_file(a,n);
xuat(a,n);
}