Код | struct DB_File { wchar_t DCity[20]; wchar_t DCountry[20]; wchar_t DCount[10]; wchar_t DSize[10]; wchar_t DYear[5]; DB_File *next; } File_Struct, *start, *end;
void CDialogAdd::OnBnClickedButton1() { CreateDirectory(L"DB_Files", NULL); FILE* myf; switch (ID_CONT) { case 0: myf = fopen("DB_Files\\Eurasia.dat", "a+"); break; case 1: myf = _wfopen(L"DB_Files\\Asia.dat", L"a+"); break; case 2: myf = _wfopen(L"DB_Files\\Africa.dat", L"a+"); break; case 3: myf = _wfopen(L"DB_Files\\Australia.dat", L"a+"); break; case 4: myf = _wfopen(L"DB_Files\\South_America.dat", L"a+"); break; case 5: myf = _wfopen(L"DB_Files\\North_America.dat", L"a+"); break; } int t = 0; ECity.GetWindowTextW(File_Struct.DCity, 20); ECountry.GetWindowTextW(File_Struct.DCountry, 20); ECount.GetWindowTextW(File_Struct.DCount, 10); ESize.GetWindowTextW(File_Struct.DSize, 10); EYear.GetWindowTextW(File_Struct.DYear, 5); t = fwrite(&File_Struct, sizeof(DB_File), 1, myf); fclose(myf); OnOK(); }
void CppcDlg::OnCbnSelendokCont() { DB_File *curr = NULL; FILE* myf; LVITEM lvi; int i = 1; WCHAR buf[100]; m_ListCtrl.DeleteAllItems(); CreateDirectory(L"DB_Files", NULL); switch (MainCont.GetCurSel()) { case 0: if ((myf = _wfopen(L"DB_Files\\Eurasia.dat", L"r")) == NULL) return; break; case 1: if ((myf = _wfopen(L"DB_Files\\Asia.dat", L"r")) == NULL) return; break; case 2: if ((myf = _wfopen(L"DB_Files\\Africa.dat", L"r")) == NULL) return; break; case 3: if ((myf = _wfopen(L"DB_Files\\Australia.dat", L"r")) == NULL) return; break; case 4: if ((myf = _wfopen(L"DB_Files\\South_America.dat", L"r")) == NULL) return; break; case 5: if ((myf = _wfopen(L"DB_Files\\North_America.dat", L"r")) == NULL) return; break; } int t = 0; while (!feof(myf)) { t = fread(&File_Struct, sizeof(DB_File), 1, myf); curr = new DB_File(); lvi.mask = LVIF_TEXT; lvi.iItem = i-1; lvi.iSubItem = 0; _itow(i, buf, 10); lvi.pszText = buf; m_ListCtrl.InsertItem(&lvi); lvi.iSubItem = 1; lvi.pszText = File_Struct.DCity; m_ListCtrl.SetItem(&lvi); lvi.iSubItem = 2; lvi.pszText = File_Struct.DCountry; m_ListCtrl.SetItem(&lvi); lvi.iSubItem = 3; lvi.pszText = File_Struct.DCount; m_ListCtrl.SetItem(&lvi); lvi.iSubItem = 4; lvi.pszText = File_Struct.DSize; m_ListCtrl.SetItem(&lvi); lvi.iSubItem = 5; lvi.pszText = File_Struct.DYear; m_ListCtrl.SetItem(&lvi); i++; wcscpy(curr->DCity, File_Struct.DCity); wcscpy(curr->DCount, File_Struct.DCount); wcscpy(curr->DCountry, File_Struct.DCountry); wcscpy(curr->DSize, File_Struct.DSize); wcscpy(curr->DYear, File_Struct.DYear); if (start == NULL) { start = curr; end = curr; end->next = NULL; } else { end->next = curr; end = curr; end->next = NULL; } } fclose(myf); }
|
Суть в том, что при дебаге просматриваю всю структуру, перед тем как выполнится fwrite, все ровно, все нормально. При выводе первый блок из файла ровно выходит, но дальше, все либо пусто, либо какими-то клочками от записанных строк. В чем может крыться проблема ? |