我正在尝试完成这项作业。基本上有一个 10 行的文件...使用 argv[],用户在位置 1 中输入文件名,行号是数组的位置 2。
到目前为止,一切正常...检查文件...计算行号等等。
你们建议我如何将该行上的字符更改为大写。我不知道该怎么做。我们只能使用lseek、open、write、read和close命令。
我的逻辑是...如果用户输入 5 来更改行号...在程序中我计算行号...当计数器达到 4 时...之后的任何内容都是第 5 行...直到\n。
计数器在每次遇到\n 时都会递增。
int line;
int counter = 0;
char c;
do
{
line = read(fd, &c, 1);
if (c == '\n')
{
counter++;
}
if (lnum == counter)
{
}
} while (line != 0);
最佳答案
您只需更改该行,使其保持相同的大小,以便您可以覆盖它(无需重写文件)。由于您已经找到了读取行的方法,因此您知道行开始的位置(以字节数为单位,感谢读取功能)。 因此,您读取必须更改为大写的行,将位置指示器重新定位到行的开头(使用 lseek),然后使用所需的更改重写读取行。
关于c - 转到一行并更改为大写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21841001/