Возникло исключение C : нарушение доступа на чтение (структура fopen / fread)

#c #struct #fopen #fread

#c #структура #fopen #fread

Вопрос:

Вот моя структура:

 struct Account {
string accID;
string name;
float balance;
string currency;
int status; 
};
  

Функция:

 Account layFileTaiKhoan(string id) {
FILE * openfile;
Account getAcc;
string mypath = "Account\"   id   ".dat";
openfile = fopen(mypath.c_str(), "r");

fread(amp;getAcc, sizeof TaiKhoan, 1, openfile);

fclose(openfile);

return getAcc;
}
  

Но я получил эту ошибку: «Возникло исключение: нарушение доступа на чтение» при использовании моей функции для сохранения структуры в файле .dat.

Пожалуйста, помогите мне устранить эту ошибку и большое вам спасибо за вашу помощь!

Комментарии:

1. Что TaiKhoan ?

2. C и C — разные языки. Выберите тот, который вы компилируете, и соответствующим образом отредактируйте вопрос (включая теги)!

3. @PeteBecker: Я не знал, что C имеет тип string и поддерживает оператор сложения для строковых литералов.

Ответ №1:

Вы не можете fread a std::string (или объект, содержащий a std::string ), поскольку std::string объект содержит только указатели на фактическую строку символов (за исключением коротких строк с некоторыми реализациями библиотеки.) Чтение ранее записанного указателя бессмысленно, а использование указателя является неопределенным поведением.