in reply to Re^2: seeking help for seek function
in thread seeking help for seek function

sysseek and seek do not print anything, it is you calling print. Those functions set the file position, they do not read the file (as others have said).

Looking at your code - forgive me if I am wrong here - you seem to be getting the file positions from the first file and using those same positions to find records in the second file. Unless each file has corresponding records of exactly the same length, then that will not work. tell and sysseek give the current byte offset position in the current file, that position will not (usually) apply to another file unless it is exactly the same format.

Replies are listed 'Best First'.
Re^4: seeking help for seek function
by pearly (Initiate) on Mar 25, 2010 at 10:33 UTC
    hi, thanks for your reply. Actually, i am getting the file position from the first file and find records in the first file too. I am using the second file, only to know which record i should fetch based on the id given in second file. Thus i am matching the id's from the second file to the first file. The second file is important for the cluster headings.Thanks !!!
      I don't know how big file2 is. I guess file 1 is the big one with all the data. An alternate approach would be to process file 2 a bit more, perhaps make a hash structure with these id's as keys and values either a hash or array with the cluster number and place for data from file 1. Read file 1 sequentially and save the data if needed in the structure that describes file 2. Then print structure when finished reading file 1.

      You are reading file1 all the way thru and then seeking around in it and structure to describe seek positions I assume is gonna be pretty big. Anyway if the data you need from file 1 fits into memory (the stuff that file 2 wants to know), this approach is faster because you don't have to do all the seeking around which is a fairly slow operation. Just an idea.