我正在尝试做这个任务。基本上有一个包含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);
答案 0 :(得分:1)
您只是要更改该行,并保持相同的大小,以便您可以覆盖它(无需重写文件)。由于您已经找到了读取线的方法,因此您知道线的起始位置(以字节数表示,这要归功于读取功能)。 因此,您读取必须更改为大写的行,将位置指示器重新定位到行的开头(使用lseek),然后使用所需的更改重写读取行。