Sponsored Content
Top Forums Programming how to move file pointer to a particular line in c Post 302178615 by ramkrix on Wednesday 26th of March 2008 03:01:35 AM
Old 03-26-2008
CPU & Memory

Quote:
char data[80];
long cur_pos;
while( feof(fh) == 0){
cur_pos = ftell(fh);
printf( "cur_cursor = %ld \n", cur_pos);
fgets(data, 80, fh);
}
A simple change to this code may work:

char data[80];
int ct_str_length;
long new_byte_position;

long cur_pos;
while( feof(fh) == 0){
cur_pos = ftell(fh);
printf( "cur_cursor = %ld \n", cur_pos);
fgets(data, 80, fh);
ct_str_length=strlen(data);
new_byte_position=ct_str_length+1;
printf("new_byte_position or cursor position is %ld" ,new_byte_position);
fseek(fh,new_byte_position,SEEKSET);

}



we know that fgets() stops once it reaches newline characte/EOF.

Till EO of file is reached(feof(fp)==0), with the curent byte position as 0th byte or first byte of first line, we are reading the first line by fgets() till newline characte is reached. Once \n is reached, fgets() tops its function and the ead content is stored in data array. the string length in this aray is the total number of characters/bytes in first line. So adding 1 byte more than that, now the current byte position becomes the beginning byte of the next line. Check this.

-Ramkrix
 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Perl how to move pointer to previous line in a txt file?

I have a text file that has blocks of text. Each block starts with ### and ends with End_###. I wrote a perl script to search a string from line 2 (ignore any line starts with ###) of each block if matched, need to print that whole block. According to the input file in below, it will print... (5 Replies)
Discussion started by: tqlam
5 Replies

2. Shell Programming and Scripting

how to move the line after a certain pattern in the file

Hi, I have a file called /bb/bin/rstrt. I need to move the line/entry "ccpm_load_shared_memory" after the entry "initcorp". The problem is that there are several entries for "initcorp" in this file and I need the entry to be moved only after the first instance of "initcorp" Is there a way... (5 Replies)
Discussion started by: aoussenko
5 Replies

3. Shell Programming and Scripting

Script to move the first line of a file to the end

I'm rather new to scripting, and despite my attempts at finding/writing a script to do what I need, I have not yet been successful. I have a file named "list.txt" of arbitrary length with contents in the following format: /home/user/Music/file1.mp3 /home/user/Music/file2.mp3... (21 Replies)
Discussion started by: Altay_H
21 Replies

4. Programming

pass a pointer-to-pointer, or return a pointer?

If one wants to get a start address of a array or a string or a block of memory via a function, there are at least two methods to achieve it: (1) one is to pass a pointer-to-pointer parameter, like: int my_malloc(int size, char **pmem) { *pmem=(char *)malloc(size); if(*pmem==NULL)... (11 Replies)
Discussion started by: aaronwong
11 Replies

5. Shell Programming and Scripting

Move a line to end of file

Can somebody help me with a script .... Read a file /etc/inittab find the string starting with rcml and move it entirely towards the end of file. rcml:2:once:/usr/sni/aix52/rc.ml > /dev/console 2>&1 I basically want to change the startup sequence. (2 Replies)
Discussion started by: imanuk2007
2 Replies

6. Shell Programming and Scripting

awk - if field is empty, move line to new file

I have a script with this statement: /usr/xpg4/bin/awk -F"" 'NR==FNR{s=$2;next}{printf "%s\"%s\"\n", $0, s}' LOOKUP.TXT finallistnew.txt >test.txt I want to include logic or an additional step that says if there is no data in field 3, move the whole line out of test.txt into an additional... (9 Replies)
Discussion started by: scriptr2be
9 Replies

7. Shell Programming and Scripting

move contents from one file to another based on line number or content

I want a script that will move everything beyond a certain line number or beyond a certain content word into another file. For example, if file A has this: first line second line third line forth line fifth line sixth line I want to run a script that will move everything beyond the third... (4 Replies)
Discussion started by: robp2175
4 Replies

8. Shell Programming and Scripting

Move a text to next line in a file

Hi , I need your help for the below issue. I have a file which has data as below An error came (/u01/app/12.csv) pkg1.func1: detail s 1111-->pkg1.func1: detail s 2222--> Now pkg1.func1: .... --> can come multiple times in the second line. I need to arrange the data in the below... (9 Replies)
Discussion started by: bhaski2012
9 Replies

9. Shell Programming and Scripting

Move a line to top of the file

Hi, I have a following file and it has only one occurrence of line that says "Output view:". It could be in middle somewhere ( i don't know the exact location ). I want to move it as the first line of the file. Input AAA BBBB CCCC Output view: XXXX YYYY ZZZZ Output should be: Output... (13 Replies)
Discussion started by: jakSun8
13 Replies

10. Solaris

Solaris 5.10 "Move Pointer" stuck

Hey there, I joined this forum just now cause I need help with an old SUN machine at work. I work on a helpdesk and we use a SOLARIS 5.10 OS. Every once in a while we will try to move one of our windows out of the way to make room on the desktop, and sometimes the mouse doesn't release what we... (7 Replies)
Discussion started by: TRex_2005
7 Replies
gets(3) 						     Library Functions Manual							   gets(3)

NAME
gets, fgets - Get a string from a stream LIBRARY
Standard C Library (libc.so, libc.a) SYNOPSIS
#include <stdio.h> char *gets( char *string); char *fgets( char *string, int n, FILE *stream); STANDARDS
Interfaces documented on this reference page conform to industry standards as follows: gets(), fgets(): XPG4, XPG4-UNIX Refer to the standards(5) reference page for more information about industry standards and associated tags. PARAMETERS
Points to a string to receive bytes. Specifies an upper bound on the number of bytes to read. Points to the FILE structure of an open file. DESCRIPTION
The gets() function reads bytes from the standard input stream, stdin, into the array pointed to by the string parameter. Data is read until a newline character is read or an end-of-file condition is encountered. If reading is stopped due to a newline character, the newline character is discarded and the string is terminated with a null byte. The fgets() function reads bytes from the data pointed to by the stream parameter into the array pointed to by the string parameter. Data is read until n-1 bytes have been read, until a newline character is read and transferred to string, or until an end-of-file condition is encountered. The string is then terminated with a null byte. NOTES
The gets() function does not check the input for a maximum size. Consequently, if more bytes are entered than will fit in the space allo- cated for the string parameter, gets() will write beyond the end of the allocated space, producing indeterminate results. To avoid this condition, use fgets() instead of gets(). RETURN VALUES
Upon successful completion, the gets() and fgets() functions return string. If the stream is at end-of-file, the end-of-file indicator for the stream is set and a null pointer is returned. If a read error occurs, the error indicator for the stream is set, a null pointer is returned, and errno is set to indicate the error. ERRORS
The fgets() and gets() functions set errno to the specified value for the following conditions: The O_NONBLOCK flag is set for the underly- ing stream and the process would be delayed by the read operation. The file descriptor underlying the stream is not a valid file descrip- tor or is not open for reading. The read operation was interrupted by a signal which was caught and no data was transferred. The call is attempting to read from the process's controlling terminal and either the process is ignoring or blocking the SIGTTIN signal or the process group is orphaned. Insufficient memory is available for the operation. The device associated with stream does not exist. RELATED INFORMATION
Functions: clearerr(3), feof(3), ferror(3), fgetws(3), fileno(3), fopen(3), fputws(3), fread(3), getc(3), getwc(3), puts(3), scanf(3) Standards: standards(5) delim off gets(3)
All times are GMT -4. The time now is 05:17 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy