Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Nadpisywanie danych

Ostatnio zmodyfikowano 2009-01-03 14:01
Autor Wiadomość
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:]
P-3296
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
P-3298
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:
C/C++
#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 );
}
P-3300
lynx
» 2009-01-03 13:17:01
Wyłączy tryb ios::binary, jest on nie potrzebny.
P-3301
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
P-3302
DejaVu
» 2009-01-03 13:53:16
C/C++
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) :)
P-3304
wujas
Temat założony przez niniejszego użytkownika
» 2009-01-03 14:01:39
ok pobawie sie tym zaraz dzieki wielkie :)
P-3306
« 1 »
  Strona 1 z 1