我需要计算文件中的行数,但是,我必须这样做
“简单”功能,例如:fopen
,fscanf
,fgets
......等等。
意思是我不能这样做:
int calculateLines(char *filename)
{
FILE *myFile;
char c;
int myLines = 0;
myFile = fopen(filename, "r");
if(myFile == NULL)
return 0;
while ((c = fgetc(f)) != EOF)
if(c == '\n')
myLines++;
fclose(f);
if(c != '\n')
myLines++;
return myLines;
}
为此,我只能使用系统调用read
,write
,close
,open
& fork
。
到目前为止,我认为:
open
:someResult = wrapper_open(argv[1],O_RDONLY,0);
read
一行一行读取:我可以以某种方式操纵读取一行一行吗?我试过检查它的教程然而空手而归。 答案 0 :(得分:2)
你无法真正与read
一起阅读。相反,您将读入数据的块(可能包含任意数量的行,可能包含一些部分行)。计算该块中的换行符,然后重复读取/计数过程,直到到达文件末尾。