The UNIX and Linux Forums  
Hello and Welcome from United States to the UNIX and Linux Forums! Thank You for Visiting and Joining Our Global Community.

Go Back   The UNIX and Linux Forums > Top Forums > High Level Programming
.
google unix.com




View Single Post in the UNIX and Linux Forums - Click on the Thread or Permalink to View Entire Thread -->
  #1 (permalink)  
Old 03-06-2008
ramkrix ramkrix is offline
Registered User
  
 

Join Date: Dec 2007
Location: TamilNadu,INDIA
Posts: 52
Exclamation EOF checking the below

Hi,

I am practicing exercise programs with System calls.

Exercise Question: write a pogram to accept a filename from the user. The program should write ecery fifth byte of the file to the standard output.

My Program :

# include <stdio.h>
# include <fcntl.h>
# include <error.h>

main()
{
int fd,first_offset=5,move_offset=0,x=1;
char a,name[20];
scanf("%s",name);

fd = open(name,O_RDONLY,0755);
printf("fd is %d",fd);

if(fd==-1)
{
printf("error");
exit(1);
}

while(x<5)
{
move_offset=move_offset+first_offset;
lseek(fd,move_offset-1,0);
read(fd,name,sizeof(name));
write(1,name,1);
x++;
}
}


Output:
[ramki@lindesk3 sysint_ex]$ cc ex1.c -o ex1
[ramki@lindesk3 sysint_ex]$ ./ex1
./test
FIVEfd is 3

The file "Test" content:
abcdFfghiIklmnVpqrsE



My Question Now:
1. in the program, I used a While loop with an varaible "X" and comparing it to random no of my choice 5 . Instead I want to check the EOF condition in the whilepart. How to check that.
If we are using file pointer and fopen fn, we can use while(feof(fp)==0). But here we used syatem calls and I don know how to check the condition here.

2. In te program output, I found "FIVE" before printing the filedescriptor number. But as per my program flow, fd should be printed first and then the output "FIVE".

3.Is there any othet way of writing the program more simple and precise, especially using piointer for getting the name of the file, instaed of using Array.

Please Help...

Thanks,
Ramkrix