是否可以读取文件,以便在重新读取新行时使用?
假设文件包含:
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()进行阅读。