Nadpisywanie danych
Ostatnio zmodyfikowano 2009-01-03 14:01
wujas Temat założony przez niniejszego użytkownika |
Nadpisywanie danych » 2009-01-03 11:58:27 Jestem przy lekcji o bibliotece <fstream> i chciałbym się dowiedzieć parę spraw . 1.Czy jest jakaś funkcja dzięki której mogę nadpisać dane w pliku czy muszę zawsze użyć trybu ios::trunc aby najpierw wyczyścić zawartość pliku a pozniej zapisac od nowa? 2.Czy jest mozliwosc aby program pobieral dane z danego wiersza pliku co mnie akurat interesuje? Chodzi mi o to aby nie tworzyc np 20 osobnych plików ale o to zeby dane byly w jednym pliku i zapisac/odczytac ten wiersz ktory mnie interesuje?Czy jakos sie to indeksuje w pliku czy cos ? Prosze o wytlumaczenie i jakis przyklad:] |
|
DejaVu |
» 2009-01-03 12:40:23 No więc po krótce: 1) Plik możesz otwierać do zapisu nie ucinając jego 2) Po pliku możesz poruszać się za pomocą seekf i seekg (chyba dobrze pamiętam nazwy tych metod) 3) Jeśli chcesz w swoim programie zmieniać n'ty wiersz dancyh, proponuję wprowadzić stałą długość wiersza z danymi, np. 50 bajtów. Dzięki temu będziesz mógł szybko przejść do n'tego wiersza stosując wzór 50*n. Jeśli będziesz miał dynamiczny rozmiar wiersza - wszystkie dane będą musiały być wczytywane dopóki nie napotkasz n'tego końca linii. 4) Przykład... niech ktoś inny go zrobi ;p ja dziś nie dam rady ;p |
|
wujas Temat założony przez niniejszego użytkownika |
» 2009-01-03 13:14:14 Tak tylko np zapisze do pliku takie dane np liczby 123 odczytuje i wyswietli 123 teraz nadpisze np 12345 i zapisze w pliku 12345 i tak samo wyswietli. Jednak jak znowu nadpisze liczbami 123 to bedzie wyswietlac 12345:/ i tego nie rozumie.Po prostu nie usunie z pliku liczb 45 cos robie zle czy jak:P? Nie wiem czy mnie tez zrozumiecie xD. o to krotki kod jakby co: #include<iostream> #include<conio.h> #include "console.ddt" #include<fstream> using namespace std; using namespace ddt::console;
int main() { fstream plik; plik.open( "plik.txt", ios::in | ios::out | ios::binary ); int a; cout << "a : "; cin >> a; plik << a; cout << "zapisales"; plik >> a; getch(); return( 0 ); }
|
|
lynx |
» 2009-01-03 13:17:01 Wyłączy tryb ios::binary, jest on nie potrzebny. |
|
wujas Temat założony przez niniejszego użytkownika |
» 2009-01-03 13:43:41 to nie zmienia faktu ze dalej mam ten sam problem:PP |
|
DejaVu |
» 2009-01-03 13:53:16 struct RWiersz { int x; int y; char imie[ 20 ]; char nazwisko[ 20 ]; };
Taką paczkę zapisujesz (odczytujesz). Rozmiar paczki jest stały i wynosi: int rozmiar = sizeof( RWiersz ); Nie możesz używać w strukturze string'a bo string ma dynamiczną długość, a w ten sposób niewykorzystane znaki zostaną również zapisane i wszystko będzie działać jak trzeba. /edit: Musisz posługiwać się read/write, a nie strumieniami << >> (przy operacjach na pliku) :) |
|
wujas Temat założony przez niniejszego użytkownika |
» 2009-01-03 14:01:39 ok pobawie sie tym zaraz dzieki wielkie :) |
|
« 1 » |