从换行读取文件

是否可以读取文件,以便在重新读取新行时使用?

假设文件包含:

Hello 
World
!

第一次调用“ ./a.out文件”时,我得到“Héllo”;第二次调用“ ./a.out文件”时,我得到“世界”,第三个是“!”。如何使用read()做到这一点?

我的代码:

#include<stdio.h>
#include <unistd.h>
#include <fcntl.h>
#include <string.h>
#include<stdlib.h>
#define READLINE_READ_SIZE 10 //amount of chars to read

char * my_readline(int fd)
{
char *buffer=malloc(READLINE_READ_SIZE+1);
int i=0;
int size;
char ch;
for(;(size=read(fd,&ch,1))>0;i++)
{
    if(i==READLINE_READ_SIZE||ch=='\n'||ch==EOF)
    {
        break;
    }
    else{
        buffer[i]=ch;
    }
}
buffer[i]='\0';
return buffer;
}


int main(int argc, char**argv)
{
    int fd=open(argv[1],O_RDONLY);
    if(fd<0)
    {
        fd=0;
    }
    char *arr=my_readline(fd);
    printf("%s\n",arr);
    free(arr);
    if(fd!=0)
    {
      close(*argv[1]);
    }
    return 0;
}

我必须仅使用read()进行阅读。