#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
объект содержит только указатели на фактическую строку символов (за исключением коротких строк с некоторыми реализациями библиотеки.) Чтение ранее записанного указателя бессмысленно, а использование указателя является неопределенным поведением.