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:



83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?