我在这里有一个解决方案,可以打开一个文件并更改它的最后一个字符。我不太明白这是如何运作的。你能解释一下吗?
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);
}
我明白最后一部分。
谢谢!
答案 0 :(得分:0)
通常open()返回一个文件描述符,它是一个整数。 0和1通常是标准I / O.
文件大小 - 2 [八位字节]是最后一个字符/字节的偏移量。