首页 > 解决方案 > 如何仅使用 read(2) 和 write(2) 重写我的代码?

问题描述

我必须制作一个类似于 Linux head 命令的 C 程序。目前,我通过打印一定数量的文本文件行来实现它的基本部分。问题是它适用于 fgets() 和 fopen() 但我不允许使用它们。当我尝试将其更改为 read() 和 open() 它只打印整个文件,而不仅仅是特定的行数。

#define BUFFSIZE 10000
int main (int argc, char* argv[]) {
  FILE *fp;
  fp = fopen(argv[3], "r");

  char buffer[BUFFSIZE];
  char *input = argv[1];
  //printf("%s", input);
  int number = atoi(argv[2]);

  int n;
  while (fgets(buffer, BUFSIZE,fp) != NULL) {
       printf("%s", buffer);
       n++;
       if (n > number-1) break;

  }

}

标签: clinux

解决方案


推荐阅读