C - 修改文件

时间:2016-11-03 13:41:55

标签: c

我在这里有一个解决方案,可以打开一个文件并更改它的最后一个字符。我不太明白这是如何运作的。你能解释一下吗?

void readlast()
{
   int handle = open("./file.txt", O_RDWR|O_CREAT, S_IRUSR|S_IWUSR);
   if (handle < 0)
   {
       return;
   }

好的,此部分打开文件,如果它不起作用,则返回。 第一个问题:为什么文件打开一个整数(int handle)?存储在里面的是什么?

   char c='N';
   lseek(handle, -2*sizeof(c), SEEK_END);

lseek显然会改变读者的位置。所以我猜这会将读者设置为文件的末尾(SEEK_END)。但是,如果我们只想写一个字符,为什么我们需要-2*sizeof(c)的偏移?

   write(handle, &c, sizeof(c));
   close(handle);
}

我明白最后一部分。

谢谢!

1 个答案:

答案 0 :(得分:0)

  1. 通常open()返回一个文件描述符,它是一个整数。 0和1通常是标准I / O.

  2. 文件大小 - 2 [八位字节]是最后一个字符/字节的偏移量。