bartek9393 Temat założony przez niniejszego użytkownika |
Odczytywanie i zapisywanie, modyfikacja danych pliku » 2009-05-17 09:07:18 Witam! Robię aktualnie program na 6 z informatyki, taki Organizer ucznia. Wszystko działa ładnie, tylko mam problem z odczytem i zapisem niektórych danych, oto kawałek kodu: if( znak == 2 ) { clrscr(); cout << "PROFIL UCZNIA" << endl; cout << "Podaj nazwe profilu, ktory podales tworzac nowego ucznia: "; cin >> nazwaprofilu; fstream plik; plik.open( & nazwaprofilu[ 0 ], ios::in | ios::out ); cout << "Otworzono profil!" << endl; system( "PAUSE" ); menu2: clrscr(); menu_profil(); cin >> wybor; if( wybor == 1 ) { clrscr(); cout << "Zarzadzanie przedmiotami" << endl; menu_przedmioty(); cin >> wybor; if( wybor == 1 ) { clrscr(); cout << "Nazwa przedmiotu (bez spacij): "; cin >> przedmiotplus; <== tutaj chcia ł bym zastosowa ć getline(), ale jak zo zrobie to jest jaki ś b ł ą d i program od razu przeskakuje do nastepnej lini i nie mo ż na wpisac nazwy plik.open( & nazwaprofilu[ 0 ], ios::out | ios::ate ); plik.write( & przedmiotplus[ 0 ], przedmiotplus.length() ); plik.close(); cout << "Dodano!" << endl; system( "PAUSE" ); goto menu2; } else if( wybor == 2 ) { } else
I jak tak zrobię, to nie dopisuje mi na koncu pliku tego co podam do zmiennej "przedmiotplus", tylko plik jest w nienaruszonym stanie. Chciałbym, aby tekst ktory podam do zmiennej przedmiotplus, był wstawiany we wczytanym wczesniej pliku w konkretne miejsce, np. w linię nr 4, czy istnieje taka możliwość? Chciałbym też odczytywać tekst, od konkretnego miejsca do wyznaczonego miejsca w pliku. Proszę o pomoc! Z góry dzięki! |
|
krdk |
» 2009-05-17 11:03:44 |
|
malan |
» 2009-05-17 12:49:29 1. <== tutaj chciałbym zastosować getline(), ale jak zo zrobie to jest jakiś błąd i program od razu przeskakuje do nastepnej lini i nie można wpisac nazwy Dzieje się tak ponieważ bufor jest "zapełniony". Jeśli chcesz używać 'getline',a wcześniej użyłeś 'cin' musisz wyczyścić bufor: fflush(stdin); 2. plik.open( & nazwaprofilu[ 0 ], ios::in | ios::out );
plik.open( & nazwaprofilu[ 0 ], ios::out | ios::ate ); 3. Chciałbym też odczytywać tekst, od konkretnego miejsca do wyznaczonego miejsca w pliku. Hmm może poczytaj o 'tellg()' http://kursy.ddt.pl/?LessonId=110 |
|
bartek9393 Temat założony przez niniejszego użytkownika |
» 2009-05-17 13:08:10 ok, dzięki! a co do tellg(), co spróbuje na odczytywanie i zapisywanie danych w określone miejsce pliku pozwana chyba funkcja seekg() i seekp(), tyko jak je zastosować?? próbowałem je użyć, ale za każdym razem jest błąd w kompilacji! niech ktoś poda przykład jak je zastosować z góry dzięki
|
|
TomekU |
» 2009-05-17 13:20:18 |
|
pekfos |
» 2009-05-17 13:35:28 jeśli zasługujesz na tę 6 to powinieneś nie mieć z tym problemu:) poza tym nie używaj system() bo nowsze antyviry uznają takie programy za potencjalnie niebezpieczne lub wirusy a nawet mogą nie pozwolić na uruchomienie programu. używaj getch() bo pozwala na odczytywanie kodu wciśniętego klawisza lub módl się aby nauczyciel który ma sprawdzać ten program nie używał oprogramowania antywirusowego z heurystyczną kontrolą aplikacji:) |
|
bartek9393 Temat założony przez niniejszego użytkownika |
» 2009-05-17 20:06:10 ok, dzieki, juz załapałem, ale chyba zrezygnuje z tego programu ;( może wymyśle jakiś inny a na 6 z informatyki chyba zasługuje, bo inni w moiej klasie, nawet nie wiedzą co to jest c++, a nauczyciela mam spoko, 6 mi postawi, bo już 3 rok robie programy (chodze do 3 kl gimnazjum) i mi zawsze stawiał, tylko musze jakiś program mu zanieść. kurde, tylko nie mam pomysłu na program pomóżcie, co można wymyśleć??? z góry dzięki za odpowiedź! |
|
TomekU |
» 2009-05-17 20:15:18 Mozesz napisac prosta baze danych (np. ksiazke telefoniczna). Wystarczy samo dodawanie/usuwanie i edytowanie rekordow. Wszystko to zapisuj w pliku .txt Mozesz tez napisac sobie jakas klase matematyczna/fizyczna/jaka_chcesz. Nie patrz na to ze istnieja juz takie, wazny jest trening i ocena na ktorej Ci zalezy. |
|
« 1 » 2 |