Leon_13 Δημοσ. 25 Μαΐου 2010 Δημοσ. 25 Μαΐου 2010 γεια σας έχω γράψει το παρακάτω κομμάτι κώδικα. > fstream fileg("data.alex", ios::in | ios:: binary); do { fileg.seekg(sizeof(form)*key); fileg.read((char*)&temp1,sizeof(form)); if(!fileg) { cout<<"1";system("pause"); fileg.close(); fstream fileg("data.alex",ios::out | ios::binary); fileg.seekg(sizeof(form)*key); fileg.write((char*)&temp,sizeof(form)); break; } else { cout<<"2";system("pause"); if (temp1.av==0) { fileg.close(); fstream fileg("data.alex",ios::out | ios::binary); fileg.seekg(sizeof(form)*key); fileg.write((char*)&temp,sizeof(form)); break; } else key++; } }while(flag==0); fileg.close(); το πρόβλημά μου είναι ότι σε κάθε νέα εγγραφή μπλοκ κώδικα χάνετε η παλιά εγγραφή που έχω περάσει στο αρχείο. πως γίνετε να μην χάνετε; έχω χρησιμοποιήσει κάτι λάθος ή θέλω κάποια άλλη εντολή; thx;)
macabre_sunsets Δημοσ. 25 Μαΐου 2010 Δημοσ. 25 Μαΐου 2010 Άμα αντί για ios:: out βάλεις ios::app? >ios::out open for output ios::app append
Leon_13 Δημοσ. 25 Μαΐου 2010 Μέλος Δημοσ. 25 Μαΐου 2010 Όχι ούτε καν γράφει με app. περίεργο, περίμενα να το γράψει στο τέλος του αρχείου. ευχαριστώ πάντως. ---------- Προσθήκη στις 21:10 ---------- Προηγούμενο μήνυμα στις 21:00 ---------- >fstream fileg("data.alex",ios:: out | ios::app | ios::binary); χρειαζόταν την out η app για να λειτουργήσει. thx για την βοήθεια. ---------- Προσθήκη στις 21:16 ---------- Προηγούμενο μήνυμα στις 21:10 ---------- κάτι άλλο με την app έχασε το νόημα το .seekg(); αλλιώς θα πρέπει να εξετάζω το αρχείο σειριακά κάτι που δεν επιτρέπεται από την εκφώνηση.
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.