Computer Games Forum
 

Go Back   Computer Games Forum > Tech > The Workshop > Limbaje de programare

Notices

Căutare produse PC Garage: Şterge căutarea

Reply
 
LinkBack Thread Tools
Old 23-03-2008, 20:21   #1 (permalink)
Registered User
 
adimisu's Avatar
 
Join Date: Jul 2007
Location: Buttsylvania
Pozitionare file pointer

Se poate cumva ca daca deschid un fisier pt appending sa fac asa incat file pointerul sa nu mai fie repozitionat la sfarsitul fisierului cand vreau sa scriu in el ? (Practic eu vreau sa suprascriu o parte din datele din fisier.)
__________________
Keep buttwalking.
 
adimisu is offline    Reply With Quote
Old 23-03-2008, 20:26   #2 (permalink)
oni
Registered User
 
Join Date: Dec 2003
In ce limbaj?
 
oni is offline    Reply With Quote
Old 23-03-2008, 21:13   #3 (permalink)
Registered User
 
adimisu's Avatar
 
Join Date: Jul 2007
Location: Buttsylvania
C++. In MSDN scrie ca inainte de orice scriere intr-un fisier deschis in appending mode, file pointerul este pozitionat la sfarsitul fisierului.
__________________
Keep buttwalking.
 
adimisu is offline    Reply With Quote
Old 23-03-2008, 22:48   #4 (permalink)
Registered User
 
Join Date: Jul 2001
Cu fopen deschizi fisierul petru citire/scriere si cu fseek il muti peste cati bytes vrei.

Ai aici un exemplu
http://www.cplusplus.com/reference/c...dio/fseek.html
__________________
.... vremurile sunt aproape...
 
Maze is offline    Reply With Quote
Old 24-03-2008, 10:03   #5 (permalink)
Registered User
 
adimisu's Avatar
 
Join Date: Jul 2007
Location: Buttsylvania
Stiu asta, problema e ca file pointerul e pozitionat la sfarsitul fisierului inainte de fiecare scriere cand fisierul e deschis pt appending. Degeaba fac fopen, apoi fseek pt ca atunci cand scriu muta file pointerul la sfarsitul fisierului. Ma gandeam ca se poate face cumva ca sa nu mai repozitioneze file pointerul inainte de scriere si sa-l lase unde il pun eu.

[code]
FILE *fp;
_stat64i32 fstats;

//iau marimea fisierului
::_wstat64i32(_T("C:\myfile.txt"), &fstats);

//il deschid
::_tfopen_s(&fp, _T("C:\myfile.txt"), _T("atc, ccs=UNICODE"));

//fac fseek pana la jumatate
::fseek(fp, fstats.st_size / 2, SEEK_SET);

//si vreau sa scriu peste cealalta jumatate
//problema e ca file pointerul e pozitionat la sfarsit
//inainte de scriere
::_ftprintf_s(fp, _T("%s %d"), _T("bla bla"), 10000);

//deci textul e adaugat la sfarsitul fisierului
//si nu la jumatatea lui unde as vrea eu

[/code]
__________________
Keep buttwalking.

Last edited by adimisu; 24-03-2008 at 10:15..
 
adimisu is offline    Reply With Quote
Old 24-03-2008, 15:15   #6 (permalink)
oni
Registered User
 
Join Date: Dec 2003
Uita-te in dictionar ce inseamna "appending" sa intelegi de ce se intampla asta.

Ceea ce vrei tu se numeste "updating", "editing" etc. insemnand inlocuirea unei portiuni de o anumita lungime din fisier; "appending" inseamna adaugarea a ceva LA SFARSITUL fisierului. Vine de la "UP" si "ENDING".
 
oni is offline    Reply With Quote
Old 24-03-2008, 18:54   #7 (permalink)
Registered User
 
adimisu's Avatar
 
Join Date: Jul 2007
Location: Buttsylvania
Ma rog, poate nu m-am exprimat eu bine, deci ce vreau sa fac e sa suprascriu o parte din datele fisierului. Chestia e ca as vrea sa evit sa deschid fisierul si sa copiez din el ce-mi trebuie in alt fisier, pe urma sa-l sterg pe cel vechi, sa adaug ce vreau si sa scriu alt fisier cu acelasi nume.
--------------------
Editare ulterioară
--------------------
Hai ca am rezolvat-o. Merge cu SetFilePointer/SetFilePointerEx.
__________________
Keep buttwalking.

Last edited by adimisu; 24-03-2008 at 18:54.. Reason: Automerged Doublepost
 
adimisu is offline    Reply With Quote
Advertisment
Reply

  Computer Games Forum > Tech > The Workshop > Limbaje de programare

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is Off
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On
Forum Jump


All times are GMT +2. The time now is 06:55.


Advertisement System V2.5 By   Branden
This site is copyrighted ©1997 - 2008, Computer Games Online SRL