Двоичный файл, открытый через C++, показывающий некоторые другие данные
class object { public: char type,name[15],rating[6],time[8],recipe[]; int calories,tagno; }ax; class recipe { char type; void log() { setbkcolor(3); // object ax(1); cout << "\n Enter the Tag of the dish for the recipe "; gets(*tag); char* txt = ".txt"; strcat(*tag, txt); cout << *tag; clrscr(); title(); char ch; ifstream fin; fin.open(*tag, ios::in); fstream fout; fout.open("allfilesrecipe4.dat",ios::out|ios::in|ios::binary); if (!fin) { cout << "cannot open file"; getch(); exit(0); } int count=0; for(int i=0;fin;i++) { char a3; fin.get(a3); //cout<<"<>"; ax.recipe[i]=a3; count++; } /////////////////////////////////////////////////////////////////////////////// fout.seekp(0); for(int j=0;j<=count;j++) { cout<<ax.recipe[j]; /////FIRST OUTPUT LOOP } getch(); fout.write((char*)&ax,sizeof(ax)); fin.close(); again: object bx; fout.read((char*)&bx,sizeof(bx)); fout.seekg(0); clrscr(); title(); for(int k=0;k<=count;k++) { cout<<bx.recipe[k]; **//////2ND OUTPUT LOOP** } getch(); fout.close(); char c; cout << "\n Enter 'h' to go back to home or press e to exit "; cin >> c; if (c == 'h') { clrscr(); home(); } else if (c == 'a') goto again; else exit(0); getch(); }
Что я уже пробовал:
*В ПРИВЕДЕННОЙ ВЫШЕ ПРОГРАММЕ Я ПОЛУЧАЮ ДОПУСТИМЫЙ ТЕКСТ ПРИ ЗАПУСКЕ ПЕРВОГО ЦИКЛА ВЫВОДА, НО КОГДА Я ОТКРЫВАЮ ФАЙЛ ЧЕРЕЗ ДРУГОЙ ОБЪЕКТ, ТЕКСТ НЕ ТОТ ЖЕ САМЫЙ
https://user-images.githubusercontent.com/55504233/65167042-6d2e2600-da5f-11e9-8147-3dcf8a85748c.png[^]
https://user-images.githubusercontent.com/55504233/65167042-6d2e2600-da5f-11e9-8147-3dcf8a85748c.png[^]
CHill60
Вы пробовали отлаживать его, чтобы увидеть, что происходит?
jeron1
Я не могу себе этого представить
если (!fin)
или вот это
for (int i = 0; fin; i++)
работайте так, как вы думаете. Может быть, взгляните на следующее Для получения справочной информации
http://www.cplusplus.com/reference/fstream/ifstream/
CPallini
Как мы могли бы попытаться исправить это, не имея входного файла(ов)?
Stefan_Lang
В качестве примечания: никогда не называйте какой-либо класс "объектом". Особенно в окнах. Просто потому, что MS сделала именно это (хорошо, это "CObject", но это не лучше), это не делает его менее глупым: во-первых, в номенклатуре OO "объект" - это *экземпляр* "класса", А это что-то совершенно другое. Во-вторых, при написании программ с использованием ООП термин "объект" уже используется чрезмерно, и его следует избегать, чтобы избежать путаницы.