Chào các bác, trong lúc đọc, ghi struct trong file nhị phân thì em gặp lỗi như sau: khi trong struct
có kiểu string
thì vẫn đọc, ghi đc nhưng lại xuất hiện lỗi, nếu thay string
bằng mảng kí tự thì đọc, ghi bình thường và không xuất hiện lỗi. Sau đây là code của em:
// trường hợp không lỗi
#include<iostream>
#include<string>
#include<string.h>
#include<fstream>
using namespace std;
struct TEST {
char a[100];
char b[100];
};
int main()
{
TEST p;
strcpy(p.a, "Khoa");
strcpy(p.b, "CNTT");
FILE* fout = fopen("cde.txt", "wb");
fwrite(&p, sizeof(TEST), 1, fout);
fclose(fout);
TEST q;
FILE* fin = fopen("cde.txt", "rb");
if (!fin)
{
cout << "Error";
return 0;
}
fread(&q, sizeof(TEST), 1, fin);
cout << q.a << "/" << q.b << endl;
fclose(fin);
return 0;
}
// trường hợp bị lỗi
#include<iostream>
#include<string>
#include<string.h>
#include<fstream>
using namespace std;
struct TEST {
string a;
string b;
};
int main()
{
TEST p;
p.a = "Khoa";
p.b = "CNTT";
FILE* fout = fopen("cde.txt", "wb");
fwrite(&p, sizeof(TEST), 1, fout);
fclose(fout);
TEST q;
FILE* fin = fopen("cde.txt", "rb");
if (!fin)
{
cout << "Error";
return 0;
}
fread(&q, sizeof(TEST), 1, fin);
cout << q.a << "/" << q.b << endl;
fclose(fin);
return 0;
}
Hiện tại thì e cũng chỉ mới học qua phần file nhị phân nê cũng chưa biết rõ lắm, mong các pro giúp e. Em sử dụng VS 2019
Đây là ảnh của lỗi trong VS: