转到一行并更改为大写

时间:2014-02-17 22:58:19

标签: c unix terminal

我正在尝试做这个任务。基本上有一个包含10行的文件...使用argv [],用户在位置1输入文件名,行号是数组的第2位。

到目前为止我已经完成了所有工作...检查文件...计算行号等等。

你们建议我做什么来改变那条线上的字符。我迷失了怎么办。我们只能使用lseek,open,write,read和close命令。

我的逻辑是......如果用户为行号输入5进行更改....在程序中我计算行号....当计数器点击4 ...之后的任何内容是第5行...直到\ n。

计数器会在每次出现时递增。

 int line;
  int counter = 0;
  char c;
  do
  {
    line = read(fd, &c, 1);
    if (c == '\n')
    {
      counter++;
    }
    if (lnum == counter)
    {

    }
  } while (line != 0);

1 个答案:

答案 0 :(得分:1)

您只是要更改该行,并保持相同的大小,以便您可以覆盖它(无需重写文件)。由于您已经找到了读取线的方法,因此您知道线的起始位置(以字节数表示,这要归功于读取功能)。 因此,您读取必须更改为大写的行,将位置指示器重新定位到行的开头(使用lseek),然后使用所需的更改重写读取行。